Когда я запускаю этот код и не выдаю никаких сообщений при запросе на lname
, тогда условие if
оценивается как true и выполняет строку println!("lname is empty");
, но почему нет debug_assert
что-нибудь напечатать?Почему `debug_assert` ничего не печатает, если первый аргумент является истинным?
use std::io;
struct Test {
fname: String,
lname: String,
}
fn main() {
println!("Enter your point!");
println!("Please input fname: ");
let mut p = Test { fname: String::new(), lname: String::new() };
io::stdin().read_line(&mut p.fname).expect("something went wrong!");
println!("Please input lname: ");
io::stdin().read_line(&mut p.lname).expect("something went wrong!");
let p = Test { fname: p.fname.trim().to_string(), lname: p.lname.trim().to_string() };
if p.lname == "" {
println!("lname is empty");
}
if p.fname == "" {
println!("fname is empty");
}
debug_assert!(p.lname == "", "Last name is empty");
println!("Full name: {} {}", p.fname, p.lname);
}
Кроме того, это затенение предыдущей переменной p
удалить строку разрывы строк в конце хороший способ сделать это?
[Сообщение с несколькими вопросами или несколькими сообщениями?] (Http://meta.stackexchange.com/q/39223/281829) – Shepmaster