LINUX.ORG.RU

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

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

С этим кодом много проблем.

async это такой сахар чтобы обозначить что функция или блок возвращает что-то что реализует трейт Future. Его есть смысл писать только если внутри есть await.

let mut j = &self.i; здесь ссылка неизменяемая, нужно let mut j = &mut self.i;

Ничего не делает потому что фючи ничего не делают если их не полить. Вот это вот выражение

    async {
        let mut c = Counter::new();
        block_on(c);
        c.count();
    };

Возвращает значение, реализующее Future. Ты с ним ничего не делаешь.

В любом случае, даже если ты починишь что я здесь описал, это не приблизит тебя к результату.

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

С этим кодом много проблем.

async это такой сахар чтобы обозначить что функция или блок возвращает что-то что реализует трейт Future. Его есть смысл писать только если внутри есть await.

let mut j = &self.i; здесь ссылка неизменяемая, нужно let mut j = &mut self.i;

Ничего не делает потому что фючи ничего не делают если их не полить. Вот это вот выражение

    async {
        let mut c = Counter::new();
        block_on(c);
        c.count();
    };

Возвращают значение, реализующее Future. Ты с ним ничего не делаешь.

В любом случае, даже если ты починишь что я здесь описал, это не приблизит тебя к результату.