Rust 尝试从循环外部借用变量绑定
我正在用Rust重写Java教科书中的一个普通计算器。它使用一个循环来请求多个输入,但我认为我遇到了所有权问题(因为循环中有一个Rust 尝试从循环外部借用变量绑定,rust,Rust,我正在用Rust重写Java教科书中的一个普通计算器。它使用一个循环来请求多个输入,但我认为我遇到了所有权问题(因为循环中有一个let grade),所以我试图更好地理解它 当我在循环外声明grade时,只记录第一个输入值:无论输入如何,每个后续的grade值都变为0。如果我在循环中声明grade,则每个输入值都会正确记录 有没有一种方法可以让我在循环之外声明grade,并且仍然可以使用这个小程序 use std::io; fn main() { let mut total: u32
let grade
),所以我试图更好地理解它
当我在循环外声明grade
时,只记录第一个输入值:无论输入如何,每个后续的grade
值都变为0。如果我在循环中声明grade
,则每个输入值都会正确记录
有没有一种方法可以让我在循环之外声明grade
,并且仍然可以使用这个小程序
use std::io;
fn main() {
let mut total: u32 = 0;
let mut count: u32 = 0;
let mut grade = String::new(); //This one
while count < 5 {
println!("Enter number:");
io::stdin().read_line(&mut grade)
.expect("failed.");
let grade: u32 = match grade.trim().parse() {
Ok(num) => num,
Err(_) => 0,
};
total = total + grade;
count = count + 1;
}
println!("Tot: {}\nAvg: {}", total, total as f64/count as f64);
}
使用std::io;
fn main(){
设mut-total:u32=0;
让mut计数:u32=0;
让mut grade=String::new();//这个
当计数小于5时{
println!(“输入编号:”);
io::stdin().读取行(&mut grade)
.expect(“失败”);
let grade:u32=匹配grade.trim().parse(){
Ok(num)=>num,
误差()=>0,
};
总数=总数+等级;
计数=计数+1;
}
println!(“Tot:{}\nAvg:{}”,总计,总计为f64/计为f64);
}
read\u line
附加到您正在读取的字符串中,因此如果您输入1,然后输入2,grade
将包含1\n2
或类似内容。无法将其解析为整数,因此下面的匹配将始终返回0。解决方案是在读取之前清空字符串:grade.clear()代码>这解决了问题,并教会了我一些关于阅读的知识。一流!