为了用 Rust 语言练习结构,我决定创建一个程序来打印你输入的数字的幂。该程序应该可以运行,直到您输入“stop”,但是有一个问题:当我输入“stop”时,循环不会中断并且我的程序在尝试将字符串“stop”转换为数字后崩溃。如何解决?
//Power of number
struct Number{
number_itself: i32,
power: i32,
}
fn main(){
loop{
let mut number = String::new();
let mut Power = String::new();
io::stdin().read_line(&mut number).expect("Hren kakaya-to");
io::stdin().read_line(&mut Power).expect("Huyeta");
if number==String::from("stop") || Power==String::from("stop"){
break;
}
let number_int:i32 = number.trim().parse().expect("Ne vyshlo");
let power_int:i32 = Power.trim().parse().expect("Hren' vyshla");
let powernum = Number{
number_itself:number_int,
power:power_int,
};
println!("{}",powernum.number_itself.pow(powernum.power as u32));
}
}```
Run Code Online (Sandbox Code Playgroud) 有人能解释一下为什么它说它*profession是一个单位类型而它是一个向量吗?
use hashbrown::HashMap;
fn main() {
let mut sphere: HashMap<String, Vec<&str>> = HashMap::new();
sphere.insert(String::from("junior"), vec![]);
sphere.insert(String::from("Middle"), vec![]);
sphere.insert(String::from("Senior"), vec![]);
loop {
println!();
let mut input = String::new();
std::io::stdin()
.read_line(&mut input)
.expect("What the hell this doesn't work!?");
if input.trim() == "stop" {
break;
}
let splited_data: Vec<&str> = input.split(" to ").collect();
let person = splited_data[0];
let category = splited_data[1].to_string();
let professions = sphere.entry(category.to_string()).or_insert(vec![]);
*professions.push(person);
}
}
Run Code Online (Sandbox Code Playgroud)
error[E0614]: type `()` cannot be dereferenced
--> src/lib.rs:21:9
|
21 | *professions.push(person);
| …Run Code Online (Sandbox Code Playgroud)