这是我试图执行的代码:
fn my_fn(arg1: &Option<Box<i32>>) -> (i32) {
if arg1.is_none() {
return 0;
}
let integer = arg1.unwrap();
*integer
}
fn main() {
let integer = 42;
my_fn(&Some(Box::new(integer)));
}
Run Code Online (Sandbox Code Playgroud)
(在Rust操场上)
我收到以下错误:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:5:19
|
5 | let integer = arg1.unwrap();
| ^^^^ cannot move out of borrowed content
Run Code Online (Sandbox Code Playgroud)
我看到已经有很多关于借阅检查器问题的文档,但在阅读之后,我仍然无法弄清楚问题.
为什么这是一个错误,我该如何解决?
我想获取它name是否为空或设置新值。我怎样才能做到这一点?
#[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())
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
#[derive(Debug)]
struct App {
name: Option<String>,
age: i32,
}
impl App {
fn get_name<'a>(&'a mut self) -> …Run Code Online (Sandbox Code Playgroud)