我和JavaScript和Go等语言合作过, JavaScript给了我速度和灵活性.
去给我简单实用的货币。
后来我遇见了Rust 起初感觉很困难 但一旦我明白了Rust处理记忆的方式 没有垃圾收集器 我就爱上了它 没有垃圾收集器的记忆安全 大多数现代语言都用垃圾收集器(GC)解决记忆管理.
GC定期发现不再使用的内存并自动解开.
Rust走不同的路径: 没有运行时的垃圾收集器 没有像 C 中那样的手动 , 在编译时保证存储安全( 在大多数情况下) Rust使用三个核心思想: 所有权借款寿命 这些程序在程序运行前由编译器检查 。 1)所有权:在一地一地一地一地一地一地一地一地一地一地一地一地一地一地一地有价值.
当所有者脱离范围时,Rust会自动降低值并释放内存.
这避免了正常代码路径中的内存出漏和双自由,不需要GC暂停. 2)借款:使用数据而不取得所有权,而不是不断复制或转让所有权,Rust让你借用引用: 不可移动出借:可移动出借:但Rust执行严格的别名规则: 许多不可变的参考文献 OR 一个可变的参考文献 此规则在编译时防止了数据竞赛. 3) 寿命:参考文献必须总是有效的寿命,描述参考文献的有效期.
通常 Rust会自动推断生命 需要的时候,你可以给他们做笔记.
这有助于防止引用已不存在的内存。
在写作"Rust"时,你觉得编译器表现得像一个严格的导师:“这个值是谁拥有的?” “这个参考值活了多久?” “你同时分享吗?” “这个参考值能活过它的数据吗?” 起初,这感觉就像摩擦.
后来,感觉像是保护。
编译器在运行时间之前抓取了全部类的bug: 使用后免费双自由 Null 类似引用误用 数据在并发代码中显示为什么它感觉困难(特别来自JavaScript和Go) 从JavaScript到Rust JavaScript是高度动态和宽容的.
您可以快速移动, 但运行时会出现许多错误 。
Rust正好相反:严格前行,以后更安全.
从去到鲁斯特去都有垃圾收集以及更简单的心理模型.
Rust要求你更深入地思考所有权和借贷问题.
在"走"中,许多程序快速编译并运行精细,但后来出现了一些记忆/货币问题.
在Rust案中,其中许多问题在汇编过程中遭到拒绝。
为什么我爱上了Rust 尽管Rust更难,我爱它,因为: 它给低级别控制 高层次安全 在保持记忆安全的同时避免GC暂停 默认会让货币更安全 它把编译器变成合作者 它教导更好的工程习惯Rust, 它能帮助我写出我能信任的代码 最终思想鲁斯特有一个陡峭的学习曲线,特别是如果你来自JavaScript或Go.
但是,一旦所有权和借贷点击,困难开始感到有意义。
对我来说,Rust改变了我对记忆、正确性和软件设计的看法。
所以我才爱上它.