Rust在2025:为什么是现在?
\n\n过去三年,Rust实现了真正的突破。这个最初被认为是“复杂且小众”的语言,如今已被用于Linux内核、浏览器(Firefox,部分Chromium)、DevOps工具(ripgrep, fd, bat)甚至Web开发中。在2025年,Rust不仅仅是“又一种语言”,而是编写安全、快速、可靠代码的头号工具。
\n\n但有一个问题:入门门槛。Rust以其borrow checker、生命周期(lifetimes)和严格的类型系统而闻名。许多初学者在第二周就因为遇到编译器错误而放弃学习。
\n\n这篇文章是2025年学习Rust的路线图。我列出了主题的顺序,给出了真实的代码示例,并解释了哪些是必须学习的,哪些可以稍后再说。我们开始吧!
\n\n阶段1:基础(第1-2周)
\n\n1.1 安装和第一个程序
\n\n从通过rustup(官方安装程序)开始安装。它管理编译器和工具链的版本。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nrustc --version\ncargo --version\n\n你的第一个文件main.rs:
fn main() {\n println!("你好,Rust 2025世界!");\n}\n\n编译:rustc main.rs && ./main。但最好立即习惯使用Cargo——包管理器和构建工具:
cargo new my_first_project\ncd my_first_project\ncargo run\n\n1.2 变量、类型、控制结构
\n\nRust是强类型语言,但编译器通常能自动推断类型。与Python或JavaScript的主要区别是变量默认是不可变的(immutable)。
\n\nfn main() {\n let x = 5; // 不可变\n let mut y = 10; // 可变\n y += 5;\n\n let name = "Rust";\n let year: u32 = 2025;\n\n if year > 2024 {\n println!("{}——未来已来!", name);\n }\n\n for i in 0..5 {\n println!("计数:{}", i);\n }\n}\n\n1.3 所有权(Ownership)——基石
\n\n这是最让初学者害怕的部分。但如果不理解所有权,你将无法编写任何实际项目。核心:Rust中的每个值都恰好有一个所有者。当所有者离开作用域时,内存被释放。
\n\nfn main() {\n let s1 = String::from("hello");\n let s2 = s1; // 所有权移动到s2\n\n // println!("{}", s1); // 错误!s1不再拥有该字符串\n println!("{}", s2); // 正确\n}\n\n如果需要传递数据而不失去所有权,使用引用(reference):
\n\nfn main() {\n let s = String::from("Rust");\n let len = calculate_length(&s); // 借用\n println!("'{}'的长度 = {}", s, len); // s仍然可用\n}\n\nfn calculate_length(s: &String) -> usize {\n s.len()\n}\n\n阶段2:深入(第3-5周)
\n\n2.1 结构体、枚举和模式匹配
\n\nRust不是传统意义上的面向对象语言,但结构体和trait覆盖了90%的需求。
\n\nstruct User {\n username: String,\n email: String,\n active: bool,\n}\n\nenum Status {\n Active,\n Inactive,\n Banned { reason: String },\n}\n\nfn check_status(status: Status) {\n match status {\n Status::Active => println!("用户活跃"),\n Status::Inactive => println!("不活跃"),\n Status::Banned { reason } => println!("已被封禁:{}", reason),\n }\n}\n\n2.2 错误处理:Option和Result
\n\nRust没有异常(exceptions)。取而代之的是优雅的Result<T, E>和Option<T>。忘掉try/except吧——现在你使用match或?
博客
书籍推荐
推荐阅读