Why doesn't `debug_assert` print anything when the first argument is true?
<p>When I run this code and provide no input when asked for <code>lname</code>, then the <code>if</code> condition evaluates to true and executes the line <code>println!("lname is empty");</code> but why doesn't the <code>debug_assert</code> print anything?</p>

<pre><code>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(&amp;mut p.fname).expect("something went wrong!");

    println!("Please input lname: ");

    io::stdin().read_line(&amp;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);
}
</code></pre>

<p>Additionally, is shadowing the previous variable <code>p</code> to remove the line line breaks at the end a good way to do this?</p>