Это самый простой пример, который я мог бы привести, который иллюстрирует проблему, с которой я сталкиваюсь.Я новичок в Rust, поэтому извините, если я задал тупой вопрос.
#[derive(Debug)]
enum TestType {
First,
Second(i32),
}
fn main() {
let mut test_var = TestType::First;
println!("Original {:?}", test_var);
let mut test_vec: Vec<&mut TestType> = vec![&mut test_var];
println!("--------------");
{
let test_ref = test_vec.pop().unwrap();
test_ref = TestType::Second(49);
}
println!("Original {:?}", test_var);
}
( Playground )
У меня есть тип enum.Я создаю переменную и присваиваю ей значение этого типа enum, и я хочу, чтобы эта переменная была владельцем значения "навсегда".Существует Vec изменяемых ссылок на этот тип.Затем я хочу получить эти ссылки и, возможно, изменить значение, на которое они указывают, чтобы изменить исходную переменную.Есть ли способ сделать это?
Компиляция кода выше приводит к:
error[E0308]: mismatched types
--> src/main.rs:16:20
|
16 | test_ref = TestType::Second(49);
| ^^^^^^^^^^^^^^^^^^^^
| |
| expected mutable reference, found enum `TestType`
| help: consider mutably borrowing here: `&mut TestType::Second(49)`
|
= note: expected type `&mut TestType`
found type `TestType`