fn f(s: &mut String) -> &String { s.push_str("root"); s } fn main() { let mut s: String = String::from("ace"); let s2 = f(&mut s); // let s2 = &mut f(&mut s); // 这里会报错, 因为s2有修改数据的可能, 会造成悬垂指针 // println!("{}", s); println!("{}", s2); println!("{}", s); }