I want to get the name
if it's not empty or set a new value. How can I do that?
#[derive(Debug)]
struct App {
name: Option<String>,
age: i32,
}
impl App {
fn get_name<'a>(&'a mut self) -> &'a Option<String> {
match self.name {
Some(_) => &self.name,
None => {
self.name = Some(String::from("234"));
&self.name
}
}
}
}
fn main() {
let mut app = App {
name: None,
age: 10,
};
println!("{:?} and name is {}", &app, &app.get_name().unwrap())
}
The error I'm getting is:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:25:44
|
25 | println!("{:?} and name is {}", &app, &app.get_name().unwrap())
| ^^^^^^^^^^^^^^ cannot move out of borrowed content
error[E0502]: cannot borrow `app` as mutable because it is also borrowed as immutable
--> src/main.rs:25:44
|
25 | println!("{:?} and name is {}", &app, &app.get_name().unwrap())
| ---------------------------------------^^^---------------------
| | | |
| | | mutable borrow occurs here
| | immutable borrow occurs here
| immutable borrow ends here
|
= note: this error originates in a macro outside of the current crate
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…