Почему Rust позволяет модифицировать изменяемую структуру после перемещения ее в замыкание?

Что позволяет компилировать следующий фрагмент кода?

#[derive(Debug)]
struct Abc {
    x: i32,
}

fn main() {
    let mut n = Abc { x: 20 };
    let c = &move || {
        println!("{:?}", n);
    };

    (*c)();
    n.x = 12; //-> But n is moved??
}

person soupybionics    schedule 09.04.2018    source источник
comment
Закрытие не имеет к этому никакого отношения. Я полагаю, что на этот вопрос уже ответил Почему компиляция не завершается ошибкой, когда присваивается элемент перемещаемого значения?. Если вы не согласны, измените свой вопрос, чтобы объяснить различия. Если вы согласны, вы можете пометить этот вопрос как дубликат.   -  person Shepmaster    schedule 09.04.2018
comment
Кстати, ваше закрытие не обязательно должно быть ссылкой. Вы можете просто сделать let c = move || /* ... */; (c)();   -  person Shepmaster    schedule 09.04.2018