т.е. статус - это надежная обертка вокруг самого значения. Чтоб нельзя было неправильное состояние значения Т взять не проверив статус.
Как сделать in-place замену одного варианта на другой, без ансейфов и без временной левой копии Т. Т.е. передвинуть T из Status::Before(T) в Status::After(T)?
https://doc.rust-lang.org/std/mem/fn.swap.html
Думаешь, временную переменную компилер не вырежет?
Костыльно не хочешь? https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1978add5bc7d521dae00e0a273876ce6
https://docs.rs/take_mut/0.2.2/take_mut/ не?
Хранить статус отдельно от самого значения, а для доступа наружу выставлять методы, которые уже оборачивают ссылку
Обсуждают сегодня