Как мне изменить * полное * содержание изменяемой ссылки в Rust? - PullRequest
1 голос
/ 17 мая 2019

Это самый простой пример, который я мог бы привести, который иллюстрирует проблему, с которой я сталкиваюсь.Я новичок в 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`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...