1. 安装Rust:优先使用rustup管理工具链
在Ubuntu上安装Rust的核心工具链(编译器rustc、包管理器cargo),推荐通过rustup(Rust官方提供的版本管理工具)安装,而非系统包管理器(如apt)。rustup能方便地切换Rust版本(稳定版、 beta版、 nightly版),并自动管理工具链依赖。
具体步骤:
sudo apt update && sudo apt upgrade -y;sudo apt install curl build-essential gcc make -y(确保gcc、make等编译工具可用);rustup安装脚本:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh,按提示选择默认选项(安装稳定版+cargo);source $HOME/.cargo/env(或重启终端),使rustc、cargo命令全局可用;rustc --version(显示Rust编译器版本)、cargo --version(显示Cargo版本)。2. 配置环境:优化开发体验
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup 安装时设置或添加至~/.bashrc(永久生效)。rustup添加clippy(代码lint工具,检测潜在错误)、rustfmt(代码格式化工具,统一代码风格),提升代码质量:rustup component add clippy rustup component add rustfmt 3. 项目结构:遵循Cargo规范
使用cargo创建项目时,自动生成符合Rust生态的标准目录结构:
cargo new my_project --bin # 创建可执行程序项目(默认) # 或 cargo new my_lib --lib # 创建库项目 生成的目录结构:
my_project/ ├── Cargo.toml # 项目配置文件(定义名称、版本、依赖、构建选项) ├── src/ │ ├── main.rs # 主入口文件(可执行程序的起点) │ └── lib.rs # 库入口文件(库项目的起点) └── target/ # 编译输出目录(自动生成,无需手动修改) Cargo.toml:明确项目元数据(名称、版本、许可证)和依赖项(如serde用于序列化、tokio用于异步编程),例如:[package] name = "my_project" version = "0.1.0" edition = "2021" # 使用Rust 2021 Edition(最新稳定特性) [dependencies] serde = { version = "1.0", features = ["derive"] } # JSON序列化库 tokio = { version = "1.0", features = ["full"] } # 异步运行时 utils.rs处理工具函数、config.rs处理配置),通过src/lib.rs或src/main.rs暴露模块,提升代码复用性。4. 依赖管理:利用Cargo高效处理
Cargo.toml的[dependencies]部分添加所需库(如serde),运行cargo build自动下载并编译依赖(缓存至~/.cargo/registry);serde = "1.0"表示兼容1.0及以上版本),避免依赖冲突;cargo update更新Cargo.lock文件(锁定依赖版本,确保构建一致性),或指定版本(如cargo update serde)更新单个依赖。5. 代码质量:使用工具保障可靠性
cargo fmt自动格式化代码(遵循Rust官方风格指南),保持代码风格一致;cargo clippy检查代码中的潜在错误(如未使用的变量、无效的内存访问),提前发现问题;src目录下的文件中添加#[cfg(test)]模块,例如:#[cfg(test)] mod tests { use super::*; #[test] fn test_add() { assert_eq!(add(2, 2), 4); // 测试add函数 } } tests目录下创建测试文件(如integration_test.rs),测试模块间的交互;criterion库(需添加criterion = "0.4"依赖)进行性能测试,例如:use criterion::{black_box, criterion_group, criterion_main, Criterion}; fn fibonacci(n: u64) -> u64 { match n { 0 => 1, 1 => 1, _ => fibonacci(n-1) + fibonacci(n-2), } } fn bench_fibonacci(c: &mut Criterion) { c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20)))); } criterion_group!(benches, bench_fibonacci); criterion_main!(benches); 运行cargo bench执行基准测试。6. 性能优化:针对性提升运行效率
Cargo build --release启用发布模式(默认opt-level=3,最大化性能);若需平衡编译时间和性能,可调整opt-level(如opt-level=2);mold链接器(比默认ld快2-3倍),替换系统链接器:sudo apt install mold export RUSTFLAGS="-C link-arg=-fuse-ld=mold" rayon库(rayon = "1.8")简化并行计算,例如将Vec的迭代转换为并行迭代(par_iter()),提升多核CPU利用率;String分配(如使用&str引用字符串切片),使用BufReader/BufWriter包装文件IO(减少系统调用次数)。7. 持续集成:自动化测试与构建
配置CI/CD工具(如GitHub Actions),在代码推送时自动运行测试、构建项目,确保代码质量。示例.github/workflows/ci.yml文件:
name: Rust CI on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust run: rustup update && rustup default stable - name: Run tests run: cargo test - name: Run clippy run: cargo clippy -- -D warnings - name: Build release run: cargo build --release 通过CI/CD,可快速发现代码问题,避免引入回归错误。