Wenn ich diesen Code ausführen und keine Eingabe bereitstellen, wenn nach lname
gefragt wird, dann wird die if
Bedingung als wahr ausgewertet und führt die Zeile println!("lname is empty");
, aber warum druckt die debug_assert
nichts?Warum gibt `debug_assert 'nichts aus, wenn das erste Argument wahr ist?
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);
}
Zusätzlich wird Shadowing die vorherige Variable p
die Zeilen Zeilenumbrüche am Ende eine gute Art und Weise zu entfernen, dies zu tun?
[Ein Beitrag mit mehreren Fragen oder mehrere Beiträge?] (Http://meta.stackexchange.com/q/39223/281829) – Shepmaster