0%

rust_learning_note

从 hello world 开始

1
2
3
fn main() {
println!("Hello, world!");
}
  • 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
2
3
4
hello_cargo
├── Cargo.toml
└── src
└── main.rs

Cargo.toml

Cargo.toml 是一个配置文件,用来描述项目的元数据。

1
2
3
4
5
6
7
8
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[package] 部分描述了包的元数据 - name: 包的名字 - version: 包的版本 - authors: 包的作者 - edition: rust 的版本

[dependencies] 部分描述了项目的依赖。

在 Rust 里,代码的包称作 crate.

cargo 的编译和运行

1
2
cd hello_cargo
cargo build

编译成功后会生成一个 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
2
let mut foo = 1;
foo = 2;

欢迎关注我的其它发布渠道