fn reuse_pin_box<T: ?Sized, U, O, F>(
    boxed: Pin<Box<T>>,
    new_value: U,
    callback: F
) -> Result<O, U>where
    F: FnOnce(Box<U>) -> O,