20240225Rust学习笔记
cargo build 编译并构建可执行文件
cargo run 编译并构建可执行文件,并且执行该程序
cargo check 只编译并不产生可执行文件,速度比build/run都快
cargo build --release 编译并构建可执行文件,同时发布
代码会运行的更快,但是编译的时间会更长
let mut 声明可变变量,rust默认是不可变量,只能赋值一次,加了mut后可以多次赋值
const 声明常量,大写,可以在外部,也可以在函数内部声明,不能改
i32 f64 默认类型,
shadow机制,同名变量重新赋值可以变不同的类型
cargo update 更新cargo.toml文件中的提及的库
cargo doc --open 下载你本地使用的库文件对应的文档并用浏览器打开
// use std::io;//引入一个io包
// use rand::prelude::*;
// fn main() {
// println!("guess number start");
// let rand_num:i32 = rand::thread_rng().gen();//调用rand库中的thread_rng()方法生成一个随机数
// println!("rand number is {}",rand_num);
// let mut guess = String::new();// rust中默认变量都是不可变的,如果需要可变,则添加mut关键词
// io::stdin().read_line(&mut guess).expect("read err");//调用io库中的stdin同时将输入的数据赋值给guess变量,如果输入有问题则提示错误
// println!("you guessed number is {}",guess);
// }
use std::io;// 引用io库
// use rand::Rng;//引用Rng随机数生成包
// use std::cmp::Ordering;
// fn main() {
// println!("Guess the number!");
// let secret_number = rand::thread_rng().gen_range(1..=100);
// println!("the secret number is {secret_number}");
// /*
// guess默认是个string类型,而我们上文的secret_number是u32类型,所以我们需要将guess转换成u32类型,因此先试用trim方法去除空格,然后用parse方法转成u32类型,如果不能转换则爆出错误提示
// */
// //let guess: u32 = guess.trim().parse().expect("please type a number");//同时这里的guess名字跟上面重复了,这在rust中属于shadow属性,可以在同一个作用域内重新定义一个同名变量
// loop {
// println!("please input your guess");
// let mut guess = String::new();
// io::stdin().read_line(&mut guess).expect("Failed to read Line");
// //let guess: u32 = guess.trim().parse().expect("please type a number");//同时这里的guess名字跟上面重复了,这在rust中属于shadow属性,可以在同一个作用域内重新定义一个同名变量
// let guess: u32 = match guess.trim().parse(){
// Ok(num) => num,
// Err(_) => {
// println!("please input a number");
// continue;
// }
// };//parse方法有一个返回值是Result,它是一个枚举类型,有两个值,一个是Ok,代表解析成功之后的操作并返回,这里直接把返回值返回。
// // Err情况是直接continue,跳过本次下次继续
// match guess.cmp(&secret_number) {
// Ordering::Less => println!("too small "),
// Ordering::Greater => println!(" Too big!"),
// Ordering::Equal => {
// println!(" You win!");
// break;
// }
// }
// println!("You guessed: {guess}");
// }
// }
use rand::Rng;
use std::cmp::Ordering;
fn main() {
//生成一个随机数,并且用一个变量保存他们
let test:u32 = 123;
println!("test is {}",test);
//test = 456;
//println!("test is {}",test);
const MAX_RETURN:u32 = 999_999 ;
println!("MAX_RETURN is {}",MAX_RETURN);
let secret_number:u32 = rand::thread_rng().gen_range(1..=200);
println!("the secret number is {secret_number}");
println!("please type your guess");
loop{
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("failed read the line");
let guess:u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("please type the number");
continue;
}
};
println!("you guess number {guess}");
match guess.cmp(&secret_number){
Ordering::Less => println!("too small"),
Ordering::Greater => println!("too big"),
Ordering::Equal => {
println!("you win");
break;
}
}
}
}