#![allow(dead_code, deprecated, unused_variables, unused_mut)] use core::pin::Pin; use core::mem::MaybeUninit; struct PinArena { memory: Box<[MaybeUninit]>, len: usize, } impl PinArena { pub fn capacity(&self) -> usize { self.memory.len() } pub fn push(&mut self, val: T) -> Pin<&mut T> { if self.len >= self.capacity() { panic!("Attempted to push to a full pin arena!"); } let ref_ = self.memory[self.len].write(val); self.len += 1; unsafe { Pin::new_unchecked(ref_) } } } fn main() {}