Невозможно заменить поле неизменяемой привязки - PullRequest
0 голосов
/ 29 октября 2018

Как я могу изменить значение поля в экземпляре вложенной структуры?

// Do Not Change - Start

struct Base {
    val: String,
}

struct Level1 {
    val: Base,
}

struct Level2 {
    val: Level1,
}

// Do Not Change - End

fn main() {
    let x = Level2 {
        val: Level1 {
            val: Base {
                val: "World".to_string(),
            },
        },
    };

    println!(" Hello {}", x.val.val.val);

    x.val.val.val = "Moon".to_string();

    println!(" Hello {}", x.val.val.val);
}

площадка

error[E0594]: cannot assign to field `x.val.val.val` of immutable binding
  --> src/main.rs:28:5
   |
18 |     let x = Level2 {
   |         - help: make this binding mutable: `mut x`
...
28 |     x.val.val.val = "Moon".to_string();
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot mutably borrow field of immutable binding

1 Ответ

0 голосов
/ 29 октября 2018

Я настоятельно рекомендую вам вернуться и перечитать Язык программирования Rust , особенно главу о переменных и изменчивости .


Делайте так, как говорит вам компилятор:

 help: make this binding mutable: `mut x`
let mut x = Level2 {
    val: Level1 {
        val: Base {
            val: "World".to_string(),
        },
    },
};

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...