看了楼上那位跟指针相爱相杀的帖,实在太有共鸣了。当年写C,半夜被段错误叫醒是家常便饭,gdb跟到天亮都未必找得着是哪个指针飘了。后来碰上Rust,怎么说呢,像是换了个比我妈还操心的编译器替我把关。
真的假的
它那个所有权加借用检查,说白了就是在编译期把悬垂指针、数据竞争这些坑提前堵死。你代码里但凡有个变量的生命周期说不清,或者两个线程要同时摸同一块内存还没协调好,编译器直接红字怼脸上,压根不让你编译过。段错误这种东西从根上就没机会冒头,对写系统级代码的人来说真算解脱。
最妙的是它没上GC却把内存安全保住了,运行时开销小到可以忽略,该造轮子造轮子,性能一点不含糊。cargo这套工具链顺手得离谱,报错信息还特别说人话,经常是被编译器骂着骂着,自己反而懂了。好吧好吧
上手头两个月确实被borrow checker折磨得想砸键盘,熬过去再回头看C,只觉得还是写Rust省心,怕被C党围攻先溜了(笑)