Rust新手教程:从零开始写出第一个安全高效的程序

{"title":"ref="/tag/2030/" style="color:#EB6E00;font-weight:bold;">Rust新手教程:从零开始写出第一个安全高效的程序","content":"

为什么选Rust?实际场景中它能帮你省时间

你有没有遇到过这样的情况:写完一段代码,本地运行好好的,一上线就崩溃,查了半天发现是空指针或者内存泄漏?尤其是做后台服务或系统工具时,C++虽然快但容易出错,Go又在性能上差点意思。这时候Rust的优势就出来了——它能在编译阶段就把大部分内存问题拦住,让你少加夜班修bug。

安装和环境准备,5分钟搞定

打开终端,直接运行官方推荐的命令:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

装完后重启终端,输入 rustc --version 能看到版本号就说明成功了。顺手再装个 Cargo(Rust的包管理器),它会自动跟着一起装好,不用额外操作。

写你的第一段Rust代码

新建一个文件叫 main.rs,内容写:

fn main() {
println!("今天学会Rust,明天效率翻倍");
}

保存后在终端运行:

rustc main.rs
./main

屏幕上打出那句话,你就跑通了第一个程序。别小看这一步,很多语言卡就卡在环境配不上,Rust在这方面还算利索。

变量与所有权:Rust最特别的地方

在JavaScript里你可以随便把一个对象传来传去,在Rust里不行。比如下面这段代码会报错:

let s1 = String::from("hello");
let s2 = s1;
println!("{}", s1); // 这一行会炸

因为Rust默认“移动”而不是“复制”,s1交给s2之后自己就失效了。这不是麻烦,而是为了防止数据竞争。你得明确说要克隆:

let s1 = String::from("hello");
let s2 = s1.clone();
println!("{}", s1); // 现在可以

刚开始可能不习惯,但写多了你会发现,这种设计让你不得不想清楚数据怎么流转,反而减少了逻辑漏洞。

用Cargo管理项目,别手动编译

单文件还能用rustc,项目一大就得靠Cargo。创建新项目:

cargo new my_app

进去看看目录结构,src里放源码,Cargo.toml写依赖和配置。运行只需:

cargo run

改了代码也不用手动清理,Cargo全包了。要是想加个日志库,比如log4rs,只用在Cargo.toml里加上:

[dependencies]
log4rs = "1.0"

下次cargo build,它自动下载编译,跟npm install一个道理。

实战小例子:读取配置文件提速日常任务

假设你每天要处理一批日志文件,路径写在config.txt里。以前你可能用Python脚本读文件,但现在试试Rust:

use std::fs;

fn main() {
let contents = fs::read_to_string("config.txt")
.expect("读取失败,请检查文件是否存在");

for line in contents.lines() {
println!("正在处理:{}", line);
// 这里可以加入实际处理逻辑
}
}

编译成二进制后,扔进定时任务,执行速度比解释型语言快不少,而且不怕运行时突然崩掉。

学习建议:边做边练,别光看文档

Rust语法有点硬,但别被吓住。找个小需求练手,比如写个命令行计算器、批量重命名工具,或者解析CSV。每写一次,对借用、生命周期的理解就深一层。官方《The Rust Programming Language》书免费在线看,叫“Rust圣经”不为过,重点看第三章和第五章,全是实打实的内容。”,"seo_title":"Rust新手入门教程|快速上手编写高效安全代码","seo_description":"适合初学者的Rust新手教程,手把手教你安装、写代码、管理项目,用实际例子提升开发效率,避开常见坑。","keywords":"Rust新手教程,Rust入门,Rust编程学习,如何学Rust,Rust效率编程"}