← SEARCHABLE ARCHIVE
Rust · 2026-07-14

Rust 從基礎到精通 — 第 1 講

透過所有權和借用安全地處理內存

INTERACTIVE READING MODE →

該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。

Rust 是一種系統程式語言,旨在在沒有垃圾收集器的情況下維護記憶體安全。 當創建效能很重要的程式時,我們嘗試在編譯階段減少無效指標和資料競爭。

價值觀有主人

Rust 中的值預設有一個擁有者。 當所有者超出範圍時,值會自動清除。

fn main() {
    let name = String::from("Rose");
    print_name(name);
    //名稱的所有權已轉移至函數。
}

fn print_name(value: String) {
    println!("{value}");
}

String如果將其作為值傳遞給函數,所有權就會轉移。 如果呼叫方想繼續使用它,它就會借出該值。

透過引用借用值

fn main() {
    let name = String::from("Rose");
    print_name(&name);
    println!("{name}");
}

fn print_name(value: &String) {
    println!("{value}");
}

&String是不具有值且被簡要閱讀的參考。 更改值&mut String您應該使用這樣的可變引用:

阻止您同時建立多個可變引用的規則一開始很棘手。 相反,它可以防止執行期間可能發生的錯誤記憶體存取和競爭條件。

將失敗的可能性表達為一種類型

Rust 經常使用 Option<T> 表示值可能不存在,並使用 Result<T, E> 表示操作可能失敗。

fn divide(a: i32, b: i32) -> Result<i32, String> {
    if b == 0 {
        return Err(String::from("它不能被 0 除。"));
    }
    Ok(a / b)
}

呼叫程式碼必須明確處理成功和失敗。 Rust 中的安全性也包括使錯誤難以被忽視。

Rust 專案是cargo new, cargo run, cargo test它使用相同的 Cargo 命令進行管理。 首先,與其嘗試記住所有所有權規則,不如建立一個小型命令列程式並按照編譯器訊息檢查借用範圍。