Open source
System Programming
Rust
Comments 14
+9

Выпуск полезный, не сильно значительный — в основном мелкие эргономические улучшения. Ждем 1.36 с hashbrown и 1.37 с async'ом (какой бы там синтаксис не выбрали в итоге). :)


Тем временем, я пару недель назад таки срезал v0.5 версию своей пошаговой ржавой игры Zemeroth и написал огромную новость об этом в девлоге: "Zemeroth v0.5: ggez, WASM, itch.io, visuals, AI, campaign, tests".
Неприятные вопросы переезда между движками и работы в вебе хотя бы на время закрыты, роадмап написан, теперь планомерно движусь к выпуску v0.6.

+1
Они сами писали что это еще не окончательное решение. То есть они теоретически готовы к дискуссии, если в последний момент появится какая-то радикальная альтренатива, но вероятность этого довольно мала.
+1

(*x)() — это сишный синтаксис. Раньше надо было FnBox пользоваться, или же помещать функциональный трейт в Box (что не очень удобно).

+1

Вроде *x для того чтобы достать что-то из бокса — это и растовый синтаксис.


То есть раньше если у вас оказался Box<dyn FnOnce()> то не было способа вызвать функцию? Это как-то непонятно.

0
Если я не ошибаюсь, то было так:
To call a FnOnce closure that is stored in a Box, the closure needs to move itself out of the Box because the closure takes ownership of self when we call it. Rust doesn’t allow us to move a value out of a Box because Rust doesn’t know how big the value inside the Box will be.

Поэтому нужно было имплементить трейт
trait FnBox {
    fn call_box(self: Box<Self>);
}

который «is allowed to take ownership of a Self value stored in a Box» и вызывать замыкание так
x.call_box()

Подробнее можно почитать здесь: doc.rust-lang.org/book/ch20-02-multithreaded.html#implementing-the-execute-method

А теперь можно просто вызывать x() без всяких заморочек
Only those users with full accounts are able to leave comments. , please.