@Nast2

Вызывая метод дочерней структуры из дорителя, получаю ошибку, cannot move out of borrowed content, как исправить?

Пример кода:

https://play.rust-lang.org/?version=stable&mode=de...

struct Child {
    v: Option<i32>,
}

impl Child {
    fn get_value(&self) -> Result<i32, &str> {
        match self.v {
            Some(v) => Ok(v),
            None => Err("Values is undefined")
        }
    }
}

struct Parent {
    child: Option<Child>,
}

impl Parent {
    fn get_child_value(&self) -> Result<i32, &str> {
        return match self.child {
            Some(child) => child.get_value(),
            None => Err("Child is undefined")
        }
    }
}

fn main() {
    let ch = Child{v: Some(2)};
    let parent = Parent{child: Some(ch)};
    parent.get_child_value();
}
  • Вопрос задан
  • 27 просмотров
Решения вопроса 1
ozkriff
@ozkriff
Крабообразный
Проще всего, кмк, будет `Some(child)` заменить на `Some(ref child)`, что бы вместо перемещения child'а он одалживался.

Или можно в сам match передавать сразу ссылку: `return match &self.child {`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы