Rust Pin

Rust Pin

(Jin Qing's Column, Sep., 2024)

From: https://doc.rust-lang.org/std/pin/index.html

Rust can pin data location in memory, that means its address can not be changed.

Pinned data guarantees the memory location is always valid.

Safe code can not move pinned data to another location.

Safe code users do not need to care about Pin.

  • What's moving
    • copy + ownership
    • all values are movable
      • assignment or function parameter
      • mem::replace
  • What's pinning
    • until drop
  • Address sensitivity
    • some interface is relay on pinned state
    • self-referenced type: Future
    • leverage the type system
      • Pin
    • how Pin works
      • restrict access to Ptr
    • PhantomPinned
  • Example types
    • self-referential struct
    • intrusive list
  • Drop
  • Projection and Structural Pinning
相关推荐
PacosonSWJTU19 分钟前
spring揭秘25-springmvc05-过滤器与拦截器区别(补充)
java·后端·spring·springmvc
知识分享小能手22 分钟前
mysql学习教程,从入门到精通,SQL处理重复数据(39)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
【D'accumulation】2 小时前
JavaScript的生成器与组合学习
开发语言·前端·javascript·学习
Lbs_gemini06032 小时前
JAVA就业笔记3——第一阶段(3)
java·开发语言·笔记·学习
Ronin3053 小时前
10.模拟实现s
开发语言·c++
非著名架构师3 小时前
基于 Java 的天气预报系统设计与实现
java·开发语言·状态模式·开源气象大模型·气象大模型·leaflet可视化·era5数据
知识分享小能手4 小时前
mysql学习教程,从入门到精通,SQL 临时表(37)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
T0uken4 小时前
【QT Quick】函数与信号处理:QML函数定义与调用
开发语言·qt·信号处理
萧鼎5 小时前
Go 语言应用开发:从入门到实战
开发语言·后端·golang
苹果酱05675 小时前
无IDEA不Java:快速掌握Java集成开发环境
java·开发语言·spring boot·mysql·中间件