相关疑难解决方法(0)

展开时无法摆脱借来的内容

这是我试图执行的代码:

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)

我看到已经有很多关于借阅检查器问题的文档,但在阅读之后,我仍然无法弄清楚问题.

为什么这是一个错误,我该如何解决?

rust borrow-checker

13
推荐指数
1
解决办法
6698
查看次数

如何获取选项的值或在它为空时设置它?

我想获取它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)

rust

10
推荐指数
1
解决办法
6103
查看次数

标签 统计

rust ×2

borrow-checker ×1