安装指南
向导指南
国内源
Rust 更新非常频繁。如果您之前安装过 Rustup,则您的 Rust 版本可能已经过时。
通过运行 rustup update
获取最新版本的 Rust。
当您安装 Rustup 时,您还将获得 Rust 构建工具和包管理器的最新稳定版本,也称为 Cargo。
- 初始化已有文件夹的项目:
cargo init
- 构建项目:
cargo build
- 启动项目:
cargo run
- 测试项目:
cargo test
- 为项目构建文档:
cargo doc
- 将库发布到 crates.io:
cargo publish
- 要测试您是否安装了 Rust 和 Cargo:
cargo --version
让我们用新的 Rust 开发环境编写一个小应用程序。
首先,我们将使用 Cargo 为我们创建一个新项目:cargo new hello-rust
如果文件夹存在则使用: cargo init
在Cargo.toml
文件中:
[dependencies]
ferris-says = "0.2"
构建项目: cargo build
开始写一个小的项目,在main.rs
文件中:
use ferris_says::say; // from the previous step
use std::io::{stdout, BufWriter};
fn main() {
let stdout = stdout();
let message = String::from("Hello fellow Rustaceans!");
let width = message.chars().count();
let mut writer = BufWriter::new(stdout.lock());
say(message.as_bytes(), width, &mut writer).unwrap();
}
运行这个应用: cargo run
修改Cargo.toml
文件包含了:整个工作空间。不会包含 [package]
[workspace]
members = [
"adder",
]
接下来,在项目根目录
运行cargo new adder
:
$ cargo new adder
Created binary (application) `adder` project
到此为止,可以运行cargo build
来构建工作空间。根目录
中的文件应该看起来像这样:
├── Cargo.lock
├── Cargo.toml
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── target
接着新生成一个叫做add-one
的库(lib):
$ cargo new add-one --lib
Created library `add-one` project
├── Cargo.lock
├── Cargo.toml
├── add-one
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── target
在add-one/src/lib.rs
文件中,增加一个add_one
函数:
文件名: add-one/src/lib.rs
pub fn add_one(x: i32) -> i32 {
x + 1
}
现在工作空间中有了一个库crate
,让adder
依赖库crate add-one
。首先需要在adder/Cargo.toml
文件中增加add-one
作为路径依赖:
文件名: adder/Cargo.toml
[dependencies]
add-one = { path = "../add-one" }
cargo
并不假定工作空间中的Crates会相互依赖,所以需要明确表明工作空间中 crate 的依赖关系。
接下来,在adder crate
中使用add-one crate
的函数add_one
打开adder/src/main.rs
在顶部增加一行use add-one
;将库crate
引入作用域。
接着修改main
函数来调用add_one
函数,文件名: adder/src/main.rs
:
use add_one;
fn main() {
let num = 10;
println!("Hello, world! {} plus one is {}!", num, add_one::add_one(num));
}
demo
:官方例子lesson_N
: 是极客对应的第几课的课程,这些主要接下来学习的途径与方法
根据编辑器提示的问题编号,可以探索更详细的信息。
rustc --explain E0382