← 返回首页

Rust 语言入门:安全与性能

Rust 由 Mozilla 发起、现由独立基金会推动,承诺三件事同时成立: 内存安全无线程数据竞争接近 C/C++ 的性能——且默认不依赖垃圾回收。

核心思想:所有权

Rust 用编译期规则管理内存:每个值有唯一所有者;所有者离开作用域时自动释放; 借用(引用)受严格约束,避免悬垂指针与重复释放。代价是初学时编译器更「唠叨」, 换来的是运行时更少惊喜。

fn main() {
    let s = String::from("万象境");
    take_ownership(s);
    // 此处不能再使用 s,所有权已转移
}

fn take_ownership(text: String) {
    println!("{}", text);
} // text 在此被释放

借用与可变性

不想转移所有权时,可以借用。同一时刻要么多个不可变借用,要么一个可变借用:

fn main() {
    let mut name = String::from("万象境");
    let len = calc_len(&name);      // 不可变借用
    append_suffix(&mut name);      // 可变借用
    println!("{} ({})", name, len);
}

fn calc_len(s: &String) -> usize {
    s.len()
}

fn append_suffix(s: &mut String) {
    s.push_str(" · Rust");
}

适合什么场景

Rust 的学习曲线比许多主流语言更陡,但一旦跨过所有权与生命周期的门槛, 你会获得一套把许多整类 bug 挡在编译期之外的工具。

从哪里开始

推荐官方书籍 The Rust Programming Language (中文常称「Rust 圣经」),配合 rustup 安装工具链后,用 cargo new 创建第一个项目。 编译器的报错信息本身就是很好的老师——读懂它,就读懂了大半 Rust。