Это код, который я пытаюсь выполнить:не может двигаться из заимствованного контента, когда разворачивания окна
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)));
}
Я получаю следующее сообщение об ошибке:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:5:19
|
5 | let integer = arg1.unwrap();
| ^^^^ cannot move out of borrowed content
Я вижу, что уже есть много документации по вопросам проверки чеков, но после прочтения я все еще не могу понять проблему.
Почему это ошибка и как ее решить?
А что, если я хочу получить ссылку на i32 внутри коробки (скажем, я хочу ее изменить и иметь другую часть программы, чтобы увидеть измененное значение)? – Moebius
FWIW, я бы написал его как 'arg1.as_ref(). Map (| x | ** x) .unwrap_or (0)' – Shepmaster
@Shepmaster, спасибо! –