1 2 3 4 5 6 7 8 9 10 11 12 13
use std::future::Future; use std::ptr; pub async fn replace_with_async<'a, R, F: Future<Output = R> + 'a, C: FnOnce(R) -> F>( dest: &mut R, fun: C, ) { unsafe { let old = ptr::read(dest); let new = fun(old).await; ptr::write(dest, new); } }