// 导入标准库中的 `io` 模块,它包含了输入输出相关的功能
use std::io;
// 程序的入口点
fn main() {
println!("Guess the number!");
println!("Please input your guess.");
// 创建一个可变的字符串变量 `guess`,用于存储用户的输入
let mut guess = String::new();
// 通过 `io::stdin()` 获取标准输入的句柄,然后使用 `.read_line(&mut guess)` 从输入中读取一行数据,
// 并将其存储到 `guess` 变量中。这里使用 `&mut guess` 表示传递 `guess` 的可变引用,以便在函数中修改它的值。
// `.expect("Failed to read line")` 表示如果读取行的操作失败,程序将抛出一个错误并显示指定的错误消息。
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
// 打印用户的猜测,使用字符串插值 `{}` 将变量 `guess` 的值嵌入到输出字符串中
println!("You guessed: {}", guess);
}
这个Rust程序实现了一个简单的用户输入互动,要求用户猜测一个数字。程序通过标准输入(stdin)获取用户的输入,并将输入存储在一个字符串变量中,然后将用户的猜测打印出来。注意到程序中使用了 &mut guess
,表示对 guess
变量的可变引用,这是因为 read_line
函数需要修改传入的字符串以存储用户的输入。
use rand :: Rng;
use std :: cmp ::Ordering;
use std::io; // prelude // trait
fn main() {
println!("猜数游戏! !");
let secret_number = rand ::thread_rng().gen_range(1, 101); // i32 u32 i64println!("神秘数字是:[}",secret number);
loop{
fprintln!("猜测一个数");
let mut guess = string ::new();io::stdin().read_line(&mut guess).expect("无法读取行");
// shadow
let guess: u32 = match guess.trim().parse().expect("请输入数字!");
println!("你猜测的数是: [}",guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"), // arm分支
Ordering::Greater => println!("Too big!"),
Ordering :: Equal =>{
println!("vou win!");
break;
}
}
}
https://crates.io/crates/rand
只需要在Cargo.toml中添加rand依赖
Cargo.lock
是 Rust 项目中由 Cargo 工具自动生成和维护的一个文件。它的作用是锁定项目依赖的确切版本,以确保在不同的构建环境中构建时使用相同的依赖版本。具体来说,Cargo.lock
文件包含了每个依赖项及其精确版本号,以及该依赖项所依赖的所有其他库的版本信息。这样一来,当团队中的不同成员、CI/CD 系统或其他构建环境尝试构建项目时,它们都会使用相同的依赖版本,从而减少了构建过程中由于依赖项的版本不一致而引起的问题。