从 hello world 开始
1 | fn main() { |
- rust 的缩进是 4 个空格,不是 tab
编译你的第一个 rust 程序
1 | rustc main.rs |
编译成功后会生成一个二进制文件,在 windows 上还会生成一个 .pdb 文件以存贮调试信息。
Rust 是 ahead-of-time (预编译)的,所以编译后的二进制文件可以在没有 rust 环境的机器上运行。
rustc 命令可以用来编译一些简单的 rust 程序,但是对于大型项目,我们需要使用 cargo 来构建和管理项目。
Hello, Cargo!
Cargo 是 rust 的构建系统和包管理器。
用 cargo 创建一个新的项目:
1 | cargo new hello_cargo |
项目结构
1 | hello_cargo |
Cargo.toml
Cargo.toml 是一个配置文件,用来描述项目的元数据。
1 | [package] |
[package] 部分描述了包的元数据 - name: 包的名字 - version: 包的版本 - authors: 包的作者 - edition: rust 的版本
[dependencies] 部分描述了项目的依赖。
在 Rust 里,代码的包称作 crate.
cargo 的编译和运行
1 | cd hello_cargo |
编译成功后会生成一个 target 目录,里面包含了编译后的二进制文件。
1 | cargo run |
cargo run 会自动编译并运行程序。如果原代码没有修改且已经编译过,cargo run 只会运行二进制文件。
cargo 的检查
1 | cargo check |
cargo check 只会检查代码是否能编译通过,但不会生成二进制文件。
cargo 的发布
1 | cargo build --release |
–release 参数会生成一个优化后的二进制文件,但编译时间会更长。
let mut 和 use
prelude(预导入)模块会被自动引入到每个 rust 程序的作用域中。但如果你想使用的模块不在 prelude 中,你需要使用 use 关键字来引入。
1 | use std::io; |
let 关键字可用于申明一个变量,变量默认是不可变的(imutable)。如果你想申明一个可变的变量,你需要额外使用 mut 关键字。
1 | let mut foo = 1; |