pub(crate) enum PropertyKind {
Show 31 variants
Align,
Size,
NoPadding,
NonNull,
Allocated,
InBound,
NonOverlap,
ValidNum,
ValidString,
ValidCStr,
Init,
Unwrap,
Typed,
Owning,
Alias,
Alive,
Pinned,
NonVolatile,
Opened,
Null,
Trait,
Unreachable,
ValidTransmute,
SplitTransmute,
ContainNoType,
NoRawPtr,
NoInternalMut,
UniInternalMut,
AtomicUpdate,
RefSend,
Unknown,
}Expand description
The vocabulary of safety predicates a contract can assert.
Each kind’s meaning, accepted argument shapes, and assembly strategy are
declared in spec::SPECS (the single source of truth); this enum only
names the kinds. A few kinds carry extra semantics: Null is the guard
branch of any(Null(p), …) (proved when p is null), and Owning asserts
ownership(*p) = none (psp IV.1 in primitive-sp.md). The kinds Unwrap,
Pinned, Opened and Unreachable are declared but not yet verified (the
checker returns Unknown), and NonVolatile is assumed satisfied (the VM
does not model volatile access).
Variants§
Align
Size
NoPadding
NonNull
Allocated
InBound
NonOverlap
ValidNum
ValidString
ValidCStr
Init
Unwrap
Typed
Owning
Alias
Alive
Pinned
NonVolatile
Opened
Null
Trait
Unreachable
ValidTransmute
SplitTransmute
ContainNoType
NoRawPtr
NoInternalMut
UniInternalMut
AtomicUpdate
RefSend
Unknown
Trait Implementations§
Source§impl Clone for PropertyKind
impl Clone for PropertyKind
impl Copy for PropertyKind
Source§impl Debug for PropertyKind
impl Debug for PropertyKind
impl Eq for PropertyKind
Source§impl Hash for PropertyKind
impl Hash for PropertyKind
Source§impl PartialEq for PropertyKind
impl PartialEq for PropertyKind
impl StructuralPartialEq for PropertyKind
Auto Trait Implementations§
impl DynSend for PropertyKind
impl DynSync for PropertyKind
impl Freeze for PropertyKind
impl RefUnwindSafe for PropertyKind
impl Send for PropertyKind
impl Sync for PropertyKind
impl Unpin for PropertyKind
impl UnsafeUnpin for PropertyKind
impl UnwindSafe for PropertyKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more