[][src]Trait corundum::PSafe

pub unsafe auto trait PSafe { }

It marks the implementing type to be free of pointers to the volatile heap, and persistence safe.

Also, every type that allows interior mutability is not safe in persistence terms, because there might be no log of the value. Atomic types are persistence safe, even though they provide interior mutability.

Implementations on Foreign Types

impl PSafe for isize[src]

impl<T> PSafe for [T] where
    T: PSafe
[src]

impl PSafe for [u8][src]

impl PSafe for char[src]

impl PSafe for u128[src]

impl PSafe for u16[src]

impl PSafe for i128[src]

impl PSafe for i16[src]

impl PSafe for str[src]

impl PSafe for f64[src]

impl PSafe for u64[src]

impl PSafe for u8[src]

impl PSafe for i64[src]

impl PSafe for i8[src]

impl<T, const N: usize> PSafe for [T; N] where
    T: PSafe
[src]

impl PSafe for bool[src]

impl PSafe for f32[src]

impl PSafe for u32[src]

impl PSafe for usize[src]

impl PSafe for i32[src]

impl<T: ?Sized> !PSafe for *const T[src]

impl<T: ?Sized> !PSafe for *mut T[src]

impl<T> !PSafe for &T[src]

impl<T> !PSafe for &mut T[src]

impl !PSafe for File[src]

impl<T: ?Sized> !PSafe for UnsafeCell<T>[src]

UnsafeCell is marked as PSafe because it exposes interior mutability without taking a log, which is unsafe from persistence perspective.

Loading content...

Implementors

impl<A: MemPool, T: PSafe + ?Sized> PSafe for Ptr<T, A>[src]

The allocator does not need to implement PSafe

impl<A: MemPool, T: PSafe> PSafe for Ptr<[T], A>[src]

impl<T, A: MemPool> !PSafe for RootCell<'_, T, A>[src]

impl<T, A: MemPool> PSafe for Mutex<T, A>[src]

impl<T: PSafe + ?Sized, A: MemPool> PSafe for LogCell<T, A>[src]

impl<T: PSafe + ?Sized, A: MemPool> PSafe for LogRefCell<T, A>[src]

impl<T: PSafe + ?Sized, A: MemPool> PSafe for Ref<'_, T, A>[src]

impl<T: PSafe + ?Sized, A: MemPool> PSafe for RefMut<'_, T, A>[src]

impl<T: PSafe + ?Sized, A: MemPool> PSafe for ParcInner<T, A>[src]

impl<T: PSafe, A: MemPool> PSafe for FatPtr<T, A>[src]

impl<T: PSafe, A: MemPool> PSafe for Vec<T, A>[src]

impl<T: Default + VSafe + ?Sized, A: MemPool> PSafe for VCell<T, A>[src]

impl<T: ?Sized, A: MemPool> PSafe for PrcBox<T, A>[src]

impl<T: ?Sized, A: MemPool> PSafe for corundum::prc::VWeak<T, A>[src]

impl<T: ?Sized, A: MemPool> PSafe for corundum::sync::VWeak<T, A>[src]

Loading content...

Auto implementors

impl !PSafe for Chaperon[src]

impl PSafe for LogEnum[src]

impl PSafe for BuddyAlloc[src]

impl PSafe for Heap[src]

impl<'a, T> !PSafe for IterHelper<'a, T>[src]

impl<'a, T, A> !PSafe for MutexGuard<'a, T, A>[src]

impl<A> PSafe for Notifier<A>[src]

impl<A> PSafe for BuddyAlg<A> where
    A: PSafe
[src]

impl<A> PSafe for Journal<A>[src]

impl<A> PSafe for Log<A>[src]

impl<A> PSafe for String<A>[src]

impl<T> !PSafe for NonNull<T>[src]

impl<T> !PSafe for IntoIteratorHelper<T>[src]

impl<T> PSafe for AssertTxInSafe<T> where
    T: PSafe
[src]

impl<T, A> !PSafe for LogNonNull<T, A>[src]

impl<T, A> PSafe for Zones<T, A> where
    A: PSafe,
    T: PSafe
[src]

impl<T: ?Sized, A> PSafe for Pbox<T, A>[src]

impl<T: ?Sized, A> PSafe for Prc<T, A>[src]

impl<T: ?Sized, A> PSafe for corundum::prc::Weak<T, A>[src]

impl<T: ?Sized, A> PSafe for Parc<T, A>[src]

impl<T: ?Sized, A> PSafe for corundum::sync::Weak<T, A>[src]

Loading content...