1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#[derive(Debug)] pub(crate) struct UnsafeCell<T>(std::cell::UnsafeCell<T>); impl<T> UnsafeCell<T> { pub(crate) const fn new(data: T) -> UnsafeCell<T> { UnsafeCell(std::cell::UnsafeCell::new(data)) } pub(crate) fn with<R>(&self, f: impl FnOnce(*const T) -> R) -> R { f(self.0.get()) } pub(crate) fn with_mut<R>(&self, f: impl FnOnce(*mut T) -> R) -> R { f(self.0.get()) } }