文章《Pinning 是一种 static borrow》
这篇文章探讨了 Rust 中的 Pin 的本质,将其视为一种静态借用的形式。
作者指出,一旦数据被固定(pinned),其访问将永久受限,即使 Pin 引用超出作用域。这是因为可能有未知位置存储了指向该数据的指针,数据必须保持一致。为了帮助理解 Pin,作者提出了“弱引用”(&weak T)的概念,这种引用不允许安全访问,但能保证数据在引用存在时不会被移动且在析构时先调用 Drop。通过这种方式,Pin 可以被视为一个带有静态弱引用的结构,其 API 和安全要求都是为了维护这种弱引用的不变性。
文章还通过侵入式链表的例子展示了如何使用 Pin 和弱引用来构建安全的 API。
- 阅读:https://nadrieril.github.io/blog/2025/11/12/pinning-is-a-kind-of-static-borrow.html
- 讨论:https://www.reddit.com/r/rust/comments/1p2uyg3/pinning_is_a_kind_of_static_borrow/
一个只用 Rust 类型系统编写 Brainfuck 解释器
它不生成任何二进制代码,只会生成一个类型。编译这个库不会生成任何对象,因为所有操作都在类型级别进行。
- 仓库:https://github.com/zannabianca1997/types-fuckery
- 讨论:https://www.reddit.com/r/rust/comments/1p33gdl/a_full_brainfuck_interpreter_with_0_lines_of_code/
早期 Rust 开发者语录
Rust 的早期开发是在 Mozilla IRC 网络上协调的,当时 Rust 开发者很喜欢 Mozilla “QDB”(名言数据库)。
Brson 获取到了当时的语录数据库,并发布了完整的原始数据库转储,以供其他人想要深入研究,例如用于非 Rust 内容。
- 网站:https://brson.github.io/rust-qdb/
- 仓库:https://github.com/brson/rust-qdb
- 文章:https://brson.github.io/2025/11/21/rust-qdb
讨论:Specialization 的 unsound 之处
“特化的主要问题在于,它可以断言关于生命周期的语句,但生命周期在代码生成过程中会被清除,因此无法影响运行时行为——而这恰恰是特化试图实现的目标。这不是编译器错误或支持不足,而是语言设计中根本性的特性冲突。”
见:http://reddit.com/r/rust/comments/1p346th/specialization_whats_unsound_about_it/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论