parallel_processor/utils/
replace_with_async.rs

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);
    }
}