第二篇 类型
同样写 let t = s;,整数可以复制,String 却会移动;共享引用能找到字符串,却不负责释放。第一篇已经让你用这些规则判断代码。现在要追问:为什么不同类型允许不同的操作?
这一篇从「类型 = 表示 + 约束」出发。表示回答值怎样由字节表达,约束回答可以怎样使用它、需要维持哪些条件。只知道布局,还不足以判断复制、修改与释放。
如果你写过 Java,也不必把已有的类型认识全部推翻。Java 类型同样约束操作;Rust 进一步在类型与编译期检查中表达所有权、借用和引用有效性的约束。我们会从具体代码的差别开始,而不是先背类型分类表。
本篇不预先展开共享所有权、运行时借用检查、并发与 unsafe。先把表示与约束分清,再讨论它们怎样组合。
本篇正在创作中,章节陆续发布。