pub enum BindingStorageClass {
Deferred,
Direct,
UniqueHeap,
SharedCow,
Reference,
LocalMutablePtr,
}Expand description
Planned runtime storage strategy for a binding slot.
Deferred is the initial state for ordinary bindings until a later planner
decides whether the slot can stay direct or must be upgraded.
LocalMutablePtr (Closure Spec Phase D) marks a slot that lives on the
stack AND has had a typed *mut T handed to a non-escaping closure env.
The borrow checker has verified that no outer code races the closure over
that slot’s lifetime (the ClosureCapture was lowered as an exclusive
borrow with LoanSinkKind::ClosureEnvMut). The binding is still direct in
the sense that the slot stays on the caller stack — no Arc<RwLock<>>,
no boxing. This is orthogonal to Direct/UniqueHeap: Direct means
“no indirection and no closure-env sharing”, LocalMutablePtr means “no
indirection but a closure env holds a typed pointer into this slot”.
Variants§
Deferred
Direct
UniqueHeap
Reference
LocalMutablePtr
Phase D: stack-resident slot with a typed *mut T capture handed to a
non-escaping closure. See the doc comment on BindingStorageClass.
Trait Implementations§
Source§impl Clone for BindingStorageClass
impl Clone for BindingStorageClass
impl Copy for BindingStorageClass
Source§impl Debug for BindingStorageClass
impl Debug for BindingStorageClass
Source§impl<'de> Deserialize<'de> for BindingStorageClass
impl<'de> Deserialize<'de> for BindingStorageClass
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for BindingStorageClass
Source§impl PartialEq for BindingStorageClass
impl PartialEq for BindingStorageClass
Source§impl Serialize for BindingStorageClass
impl Serialize for BindingStorageClass
impl StructuralPartialEq for BindingStorageClass
Auto Trait Implementations§
impl Freeze for BindingStorageClass
impl RefUnwindSafe for BindingStorageClass
impl Send for BindingStorageClass
impl Sync for BindingStorageClass
impl Unpin for BindingStorageClass
impl UnsafeUnpin for BindingStorageClass
impl UnwindSafe for BindingStorageClass
Blanket Implementations§
impl<T> Allocation for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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