1use std::pin::Pin; 2 3pub fn pin_project_or_insert_with<T>( 4 mut option: Pin<&mut Option<T>>, 5 f: impl FnOnce() -> T, 6) -> Pin<&mut T> { 7 if option.is_none() { 8 option.set(Some(f())); 9 } 10 11 option.as_pin_mut().unwrap() 12}