LINUX.ORG.RU

История изменений

Исправление MyTrooName, (текущая версия) :

mem::drop превращает твою лямбду в FnOnce, так что вызов f() её поглощает, и не надо объявлять ее mut

fn main() {
    use std::mem;

    let mut d = "FOO".to_owned();
    let mut n = 0;

    let f = || {
        n += 1;
        d.push_str("BAR");
        mem::drop(d);
    };

    f();
    f();
}
----
error[E0382]: use of moved value: `f`
  --> src/main.rs:14:5
   |
13 |     f();
   |     - value moved here
14 |     f();
   |     ^ value used here after move

Исходная версия MyTrooName, :

mem::drop превращает твою лямбду в FnOnce, так что вызов f() её поглощает, и не надо объявлять ее mut