-1
lname
を要求されたときにこのコードを実行して入力を与えないと、if
の条件はtrueと評価され、println!("lname is empty");
という行が実行されますが、debug_assert
は何も印刷されません。最初の引数がtrueのときに `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
をシャドウイングされますか?
[複数の質問または複数の投稿を含む1つの投稿?](http://meta.stackexchange.com/q/39223/281829) – Shepmaster