~/VibeHandbook
免費 PDF

程式語言

rust-lang.org

Rust

是什麼

Rust 是一種專注於記憶體安全的編譯型系統級語言。大多數語言都會執行一個垃圾回收器——一個在後臺自動清理不再使用的記憶體的工具。Rust 不設這個清理工,而是在構建程式的過程中親自證明記憶體被正確地處理了。想像圖書館裡的一本書:一次只能有一個人拿著它並在上面書寫,而對於已經歸還並銷燬的書,系統會拒絕借出。這樣你就永遠不會不小心用到一個已經不存在的東西。Rust 的所有權與借用模型,對你的資料起的正是這個作用。它能在程式執行之前就保證你不會遇到資料競爭(程式碼的兩處同時改動同一個東西)或釋放後使用(use-after-free,使用已經被清理掉的記憶體)的 bug。其結果是:以大大減少搬起石頭砸自己腳的可能,換來 C 級別的速度。

優勢

  • 記憶體安全和執行緒安全在構建程式的過程中得到檢查,無需垃圾回收器(大多數語言在後臺執行的記憶體清理工)。
  • 效能與 C 和 C++ 相當。
  • 豐富的型別系統、模式匹配,以及一流的包管理器(Cargo,Rust 內建的構建與打包工具)。
  • 出色的編譯器錯誤資訊,能解釋哪裡出了問題以及如何修復。

權衡取捨

  • 學習曲線陡峭——borrow checker(借用檢查器,即強制執行上面那套"一次只能一個人"借書規則的 Rust 機制)需要花真正的時間去消化。
  • 編寫速度比高階語言慢,編譯時間也更長。
  • 對於簡單指令碼或快速原型而言,殺雞用牛刀。
  • 非同步 Rust 和大量使用生命週期的泛型程式碼可能變得相當錯綜複雜。

何時選用

當效能、可靠性和資源控制需要同時兼顧時,就該選用 Rust:系統軟體、遊戲引擎、命令列工具、WebAssembly、嵌入式,或效能關鍵的服務。對於一次性指令碼來說它並不合適,因為那種場景下的安全保障不值得付出額外的摩擦成本。

與 vibe coding 的契合度

AI 助手能生成看似合理的 Rust 程式碼,但 borrow checker 才是真正的裁判——你應當預期會把編譯器錯誤貼上回去並反覆迭代,這種方式效果很好,因為 Rust 的診斷資訊精確,模型可以據此行動。指揮 AI 用 Result? 來處理錯誤,傾向於使用擁有所有權的型別或清晰的借用,而不是去和生命週期較勁,並要求它明確地建議 crate(Rust 可複用的程式碼包,連同 Cargo.toml 條目)。要求它寫 cargo test 用例,以便你能驗證安全性和行為。當模型提出 unsafe 時,要質疑它,先要求一個安全的替代方案。

fn main() {
    let nums = vec![3, 1, 4, 1, 5, 9, 2, 6];
    let sum: i32 = nums.iter().filter(|&&n| n % 2 == 0).sum();
    println!("Sum of evens: {sum}");
}