I'm new to rust, and am wondering why the following code doesn't result in a:
cannot borrow val as mutable more than once at a time error.  It seems like by the time I've reached the second_layer function, I should have three separate references to the same original val variable:
val_ref in the main function body
val_ref2 in the first_layer function body
val_ref3 in the second_layer function body
Any help would be appreciated!
fn first_layer(val_ref2: &mut String)
{
    *val_ref2 = String::from("first_layer");
    println!("{}", val_ref2);
    second_layer(val_ref2);
}
fn second_layer(val_ref3: &mut String)
{
    *val_ref3 = String::from("second_layer");
    println!("{}", val_ref3);
}
fn main()
{
    let mut val = String::from("asdf");
    let val_ref: &mut String = &mut val;
    first_layer(val_ref);
    println!("{}", val_ref);
}
Thanks,