B {
data: Cell<A>,
}
impl B {
pub fn r#do(&self, func: impl FnOnce(&mut A)) {
let mut data = self.data.take();
func(&mut data);
self.data.set(data);
}
}
fn foo() {
let b = B::default();
b.r#do(|a| {
// do things
});
}
и тут можно как-то +-гарантировать, что оптимизатор уберёт лишнее копирование в do()?
self.data.with не сойдёт?
это где?
У Cell нет никакого with, это для LocalKey, и неудобно пользоваться У Cell есть update, но он найтли
± должен убрать, если инлайнер увидит, а гарантировать не получится
Обсуждают сегодня