Rust 入门笔记
Cargo
Cargo 是 Rust 官方提供的构建系统和包管理器
cargo new <proj-name> # 新建项目
cargo build # 编译当前项目
cargo run # 编译并运行
cargo check # 语法检查
cargo test # 单元测试
cargo update # 更新 toml 中依赖项
cargo clean # 清理临时文件和目录
# cargo 可以分别构建 examples 文件夹下的每一个文件
cargo run --example helloworld # 单独构建 examples 下的 helloworld.rs
输出字符串
println!("hello world"); // 换行
print!("hello world"); // 不换行
let a = 12;
print!("a is {}", a);
println!("a is {}, a again is {}", a, a);
println!("a is {0}, a again is {0}", a); // 传入数字把后续参数当成数组访问,下标从 0 开始
println!("{{}}"); // {{ 和 }} 转义 { 和 },其他同 C
变量
Rust 变量有类型,编译器会自动推导,不允许中途改变类型,不允许精度有损失的强制类型转换
不可变变量和常量
不可变变量的值可以重新绑定,常量不允许
数据类型
Rust 是静态类型语言,可以显式指定类型
i32 u32 f64 bool char
前两者对应 int32_t 和 uint32_t
函数返回值
-> 指定返回值类型,默认为空元组
控制流
if 表达式
loop 循环
无限循环,break 退出
while 循环
for 循环
所有权
所有权(ownership),借用(borrowing),引用(reference)
结构体
struct User{
username: String,
age: u8,
};
let user1 = User{
username: String::from("anonymous"),
age: 18,
};
枚举
match 语句
fn main() {
let number = 3;
match number {
1 => println!("是第一名!"),
2 => println!("是第二名"),
3 => println!("是第三名"),
_ => println!("其他名次"), // _ 代表“通配符”,匹配所有剩余情况
}
}
match 必须穷尽这个类型的所有可能,_ 代替剩余情况