- Cargo
- 源文件扩展名通常为rs,用rustc编译,但使用cargo更好
- cargo new —bin <名称> 创建一个应用程序
- 编译:cargo build [—release]
- 编译运行:cargo run
- 配置文件
- cargo.toml 工程配置
- cargo.lock 记录编译时各种依赖库的版本,保证编译可重现
语法
- 外部依赖
- 引入:extern crate <名称>
- 使用:use
::<类型名称>
- 变量
- let 定义变量,通常不指定类型,使用自动类型推导;如果要指定类型,在变量名后面加冒号和类型名称
- 默认为不可变的(immutable),可使用mut修饰表示可变(muttable)
- 强大的match```rust
match guess.cmp(&secret_number){
} ```Ordering::Less => println!("小了"),Ordering::Greater => println!("大了"),Ordering::Equal => {println!("猜对了");break;}
- 外部依赖
源代码```rust
/ 引入外部依赖需要extern crate和use两个语句 / extern crate rand;
use std::io; use std::cmp::Ordering; use rand::Rng;
fn main() {
println!("----- 猜数游戏 -----");// let定义变量,默认为不可变的(immutable)let secret_number = rand::thread_rng().gen_range(1,101);loop{println!("输入猜测值: ");// 用mut明确说明变量值可修改let mut guess = String::new();// io::stdin() 返回 Stdin 实例// read_line() 函数读取一行// &mut 表示引用可变的变量// read_line() 的返回值为Result类型,是一个枚举,通常的值有OK和Err// Result 类型的 expect() 函数在值为 Err 的时候 panic// 导致程序退出io::stdin().read_line(&mut guess).expect("读取行失败");// 允许变量遮盖(shadown)// String 类型的 trim() 方法去除头尾空格// parse() 解析字符串到数,可返回多种类型,所以需要指定类型// let mut guess: u32 = match guess.trim().parse().expect("请输入一个数")let guess: u32 = match guess.trim().parse(){Ok(num) => num,Err(_) => continue,};println!("你的猜测: {}",guess);// match的功能很强大,类似switchmatch guess.cmp(&secret_number){Ordering::Less => println!("小了"),Ordering::Greater => println!("大了"),Ordering::Equal => {println!("猜对了");break;}}}
} ```
