我似乎是混合类型,但我不太清楚如何解决这个问题。有人能帮我吗?
let args_vector: Vec<String> = env::args().collect();
for arg in &args_vector[1..]{
match arg{
"--bytes" => {
flag.c = true;
},
"--chars" => {
flag.m =true;
},
_ => println! ("Error"),
}
}在比赛中,我得到了一个错误:
mismatched types: expected struct `std::string::String`, found str 发布于 2017-08-21 04:22:07
在这里,arg是匹配中的String类型,而"--bytes"是&str类型。因此,必须将arg类型为String转换为&str。这可以使用String::as_ref()来完成。
let args_vector: Vec<String> = env::args().collect();
for arg in &args_vector[1..] {
match arg.as_ref() {
"--bytes" => {
flag.c = true;
}
"--chars" => {
flag.m = true;
}
_ => println!("Error")
};
}注意,在println!之后缺少的println!使所有match分支返回相同的类型。
https://stackoverflow.com/questions/45788808
复制相似问题