文章目录
- 1. 目的
- 2. 命令集合
- 3. 安装或更新 rust
- 3.1 命令
- 3.2 运行结果
- 4. 包管理工具 Cargo
- 5. 创建 Rust 的 Hello World 程序: 单个文件
- 6. 创建 Rust 的 Hello World 工程: 基于 Cargo
- 6.1 cargo new 创建工程
- 6.2 cargo run
- 6.3 完整输出
- 6.4 解释
- 7. IDE/编辑器
- 8. References
1. 目的
安装 rust 语言需要的开发环境, 包括必要的工具链, 以及可选的 IDE/编辑器.
2. 命令集合
rustc
: rust 编译器, 用来编译.rs
后缀的文件rustup
: rust 工具链安装程序(命令行), 用来安装、更新 rustc、cargo 以及编译工具链,比如交叉编译的工具链cargo
: rust 的工程管理工具, 它自称为“rust 包管理器”,但其实还肩负着每个工程的构建、清理等任务
3. 安装或更新 rust
3.1 命令
第一次安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装了好久,rust 都 rust 了(rust 本意是铁锈),还没有开启学习 rust 的你,请务必更新 rust 到最新:
rustup update
查看 rust 版本:
rustc -V
3.2 运行结果
我是在 Ubuntu 22.04 下运行的。今天是 2023年06月24日。 rust 更新后是 1.70.0 版本:
zz@Legion-R7000P% rustup update
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
732.1 KiB / 732.1 KiB (100 %) 175.4 KiB/s in 2s ETA: 0s
info: latest update on 2023-06-01, rust version 1.70.0 (90c541806 2023-05-31)
info: downloading component 'rust-src'2.3 MiB / 2.3 MiB (100 %) 1.7 MiB/s in 1s ETA: 0s
info: downloading component 'cargo'6.9 MiB / 6.9 MiB (100 %) 2.4 MiB/s in 3s ETA: 0s
info: downloading component 'clippy'
info: downloading component 'rust-docs'13.5 MiB / 13.5 MiB (100 %) 3.7 MiB/s in 4s ETA: 0s
info: downloading component 'rust-std'27.3 MiB / 27.3 MiB (100 %) 4.6 MiB/s in 6s ETA: 0s
info: downloading component 'rustc'64.3 MiB / 64.3 MiB (100 %) 4.2 MiB/s in 15s ETA: 0s
info: downloading component 'rustfmt'
info: removing previous version of component 'rust-src'
info: removing previous version of component 'cargo'
info: removing previous version of component 'clippy'
info: removing previous version of component 'rust-docs'
info: removing previous version of component 'rust-std'
info: removing previous version of component 'rustc'
info: removing previous version of component 'rustfmt'
info: installing component 'rust-src'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-std'27.3 MiB / 27.3 MiB (100 %) 19.6 MiB/s in 1s ETA: 0s
info: installing component 'rustc'64.3 MiB / 64.3 MiB (100 %) 21.1 MiB/s in 3s ETA: 0s
info: installing component 'rustfmt'
info: checking for self-updatestable-x86_64-unknown-linux-gnu updated - rustc 1.70.0 (90c541806 2023-05-31) (from rustc 1.69.0 (84c898d65 2023-04-16))info: cleaning up downloads & tmp directories
zz@Legion-R7000P% rustc -V
rustc 1.70.0 (90c541806 2023-05-31)
4. 包管理工具 Cargo
cargo 是一个命令行工具, 安装 rust 后自带的。当前 (2023-06-24 19:27:29) cargo 版本也是 1.70.0。
zz@Legion-R7000P% cargo -V
cargo 1.70.0 (ec8a8a0ca 2023-04-25)
zz@Legion-R7000P% rustc -V
rustc 1.70.0 (90c541806 2023-05-31)
5. 创建 Rust 的 Hello World 程序: 单个文件
最简单的额 rust 程序, 只有一个 .rs 文件, 不需要让 cargo 来下掺和。
hello.rs:
fn main()
{println!("Hello, World!");
}
编译和运行:
rustc hello.rs
./hello
输出:
zz@Legion-R7000P% rustc hello.rs
zz@Legion-R7000P% ./hello
Hello, World!
zz@Legion-R7000P% ls
hello hello.rs
6. 创建 Rust 的 Hello World 工程: 基于 Cargo
6.1 cargo new 创建工程
既然 Rust 官方让我们用 Cargo, 那就试用一下:
zz@Legion-R7000P% ls
hello hello.rs
zz@Legion-R7000P% pwd
/home/zz/work/rust_abc
zz@Legion-R7000P% cargo new hello-rustCreated binary (application) `hello-rust` package
zz@Legion-R7000P% tree -L 3
.
├── hello
├── hello.rs
└── hello-rust├── Cargo.toml└── src└── main.rs2 directories, 4 files
其中:
Cargo.toml
是 manifest 文件,保存了工程的 metadata 和依赖项
[package]
name = "hello-rust"
version = "0.1.0"
edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]
src/main.rs
是主代码
fn main() {println!("Hello, world!");
}
6.2 cargo run
我们像小白鼠一样,按官方文档直接操作。刚才已经执行过了
cargo new hello-rust
现在执行
cargo run
发现报错了:
error: could not find
Cargo.toml
in/home/zz/work/rust_abc
or any parent directory
嗯,官方教程1 也写的挺不仔细的, 少一个切换路径的操作:
cd hello-rust # 进入到我们刚才创建的工程目录中
然后才是运行:
cargo run
就看到了想要的输出:
zz@Legion-R7000P% cargo run
Compiling hello-rust v0.1.0 (/home/zz/work/rust_abc/hello-rust)
Finished dev [unoptimized + debuginfo] target(s) in 0.19s
Runningtarget/debug/hello-rust
Hello, world!
6.3 完整输出
zz@Legion-R7000P% cargo run
error: could not find `Cargo.toml` in `/home/zz/work/rust_abc` or any parent directory
zz@Legion-R7000P% cargo run hello-rust
error: could not find `Cargo.toml` in `/home/zz/work/rust_abc` or any parent directory
zz@Legion-R7000P% cd hello-rust
zz@Legion-R7000P% cargo runCompiling hello-rust v0.1.0 (/home/zz/work/rust_abc/hello-rust)Finished dev [unoptimized + debuginfo] target(s) in 0.19sRunning `target/debug/hello-rust`
Hello, world!
6.4 解释
cargo run
干了很多事情:
- 编译, 得到了
target/debug/hello-rust
文件 - 运行,运行的是
target/debug/hello-rust
, 输出了 “Hello, world!” - 还有一些其他杂七杂八的文件
zz@Legion-R7000P% pwd
/home/zz/work/rust_abc/hello-rust
zz@Legion-R7000P% tree -L 4
.
├── Cargo.lock
├── Cargo.toml
├── src
│ └── main.rs
└── target├── CACHEDIR.TAG└── debug├── build├── deps│ ├── hello_rust-741c35951fb72cce│ └── hello_rust-741c35951fb72cce.d├── examples├── hello-rust├── hello-rust.d└── incremental└── hello_rust-3g41msry4z82l8 directories, 8 files
7. IDE/编辑器
IDE/编辑器在初学 rust 阶段是最不重要的事情。在这个阶段, 用 记事本/Vim 就可以完成 rust 代码的编写和运行。vim 也是没有安装任何插件的 vim, 只是开启了语法高亮:
~/.vimrc
:
" let vim set indentation according to file type
if has('autocmd')filetype plugin indent on
endif
使用的操作系统是 Ubuntu 22.04, KDE 桌面。
8. References
https://www.rust-lang.org/learn/get-started ↩︎