Appearance
2026-09-19 · 学习笔记 02
Rust 第一个项目
创建项目、运行代码、生成 exe。所有命令在 Git Bash 执行,项目只需创建一次。
1. 创建项目
bash
cargo new hello_rust
cd hello_rustcargo new 生成项目骨架,默认初始化 Git 仓库;如果在已有 Git 仓库内创建项目,则不会再创建嵌套仓库。下面是独立创建项目时的目录:
hello_rust/
├── .git/ # 自动 git init
├── .gitignore # 已写好 target/ 排除规则
├── Cargo.toml # 项目配置(类似 pom.xml / package.json)
└── src/
└── main.rs # 入口源码Cargo.toml 初始内容:
toml
[package]
name = "hello_rust"
version = "0.1.0"
edition = "2024"
[dependencies]main.rs 初始内容:
rust
fn main() {
println!("Hello, world!");
}edition = "2024" 指定 Rust 的语言版次,不是编译器版本号。新项目保持默认值即可。
2. 运行
bash
cargo run输出 Hello, world!。首次运行会编译,耗时取决于机器和依赖;源码、依赖及构建配置未变化时,通常复用已有编译产物。
首次运行后,项目中会生成 Cargo.lock 和 target/。Cargo.lock 记录解析后的依赖版本,应用项目应将它提交到 Git;target/ 存放编译产物,不提交。
3. 添加依赖(选学)
本项目只使用标准库,不需要添加依赖,[dependencies] 保持为空即可。
第三方库通常从 crates.io 获取,也可以来自 Git 仓库或本地路径。需要使用第三方库时,在项目目录执行 cargo add 库名。例如,使用随机数库时执行:
bash
export HTTPS_PROXY=http://127.0.0.1:7897
cargo add randcargo add 会把依赖写入 Cargo.toml。随后运行 cargo run,Cargo 自动下载、编译并链接所需依赖,不需要单独的安装步骤。
需要访问 crates.io 时,确保本地代理正在运行。export 设置对当前终端会话生效;下载新依赖、更新依赖或重新解析版本时都可能访问网络。
注册表依赖缓存位于 Cargo 主目录下的 registry/:设置了 CARGO_HOME 时是 $CARGO_HOME/registry,否则默认是用户主目录下的 .cargo/registry。
依赖及所需索引信息已缓存后,可以使用离线模式:
bash
cargo run --offline缓存不完整时会报错,需要联网补齐。
4. 常用命令
| 命令 | 作用 |
|---|---|
cargo new <名字> | 创建项目 |
cargo run | 编译并运行 |
cargo check | 检查当前项目,通常比完整构建快,不生成当前项目的可执行文件 |
cargo build | 编译,产物在 target/debug/ |
cargo build --release | 编译优化版,产物在 target/release/,交付用这个 |
cargo add <库名> | 添加第三方依赖,自动修改 Cargo.toml |
cargo update | 更新依赖到兼容范围内的最新版 |
默认情况下,编译产物位于项目下的 target/ 目录:
target/debug/— 默认开发构建,编译较快,日常开发用。target/release/— 开启优化的构建,通常编译较慢,用于发布;体积取决于代码和构建设置。
本例生成的 exe 不需要对方安装 Rust。实际工具交付时,还需检查是否依赖额外 DLL、配置或资源文件。需要命令行参数的工具,应从终端运行;如果要供员工双击使用,还需设计输入和结果展示方式。
5. 验收
在前面已创建的 hello_rust 项目目录执行,不要再次运行 cargo new:
bash
cargo run
cargo build --release
./target/release/hello_rust.exe第一条和第三条都应输出:
text
Hello, world!第二条应成功生成 target/release/hello_rust.exe。第三条直接运行编译后的 exe,不经过 Cargo。
在终端运行可以看清输出和错误。双击控制台程序后窗口可能立即关闭,不适合检查运行结果。
6. 常见问题
下载依赖卡在 Downloading crates 确认本地代理正在运行,在当前 Git Bash 执行后重试:
bash
export HTTPS_PROXY=http://127.0.0.1:7897
cargo run改了 Cargo.toml 后报错 保存文件后重新执行 cargo run,根据终端报错检查 TOML 格式、依赖版本和网络连接。Cargo 会自动处理配置变化,通常不需要清理 target/。
cargo new 提示目录已存在 项目已经创建时,进入该目录运行 cargo run,不要重复创建。
target/ 目录越来越大 正常,里面是编译中间产物,cargo clean 一条命令清空,需要时再重新编译。