pub enum VTableDecl {
NotDynCompatible,
Lazy,
VTable(GlobalDeclRef),
Unknown(String),
}Expand description
The virtual table instance for a trait implementation.
Variants§
NotDynCompatible
The trait is not dyn-compatible, so no vtable exists.
Lazy
The trait is dyn-compatible, but we have not computed a vtable for it, as it is not used.
VTable(GlobalDeclRef)
The trait is dyn-compatible, and we have computed a vtable for it.
Unknown(String)
We don’t support computing a vtable for this impl; the string explains why.
Implementations§
Source§impl VTableDecl
impl VTableDecl
Sourcepub fn is_not_dyn_compatible(&self) -> bool
pub fn is_not_dyn_compatible(&self) -> bool
Returns true if this is a VTableDecl::NotDynCompatible, otherwise false
Sourcepub fn is_v_table(&self) -> bool
pub fn is_v_table(&self) -> bool
Returns true if this is a VTableDecl::VTable, otherwise false
Sourcepub fn as_v_table_mut(&mut self) -> Option<&mut GlobalDeclRef>
pub fn as_v_table_mut(&mut self) -> Option<&mut GlobalDeclRef>
Optionally returns mutable references to the inner fields if this is a VTableDecl::VTable, otherwise None
Sourcepub fn as_v_table(&self) -> Option<&GlobalDeclRef>
pub fn as_v_table(&self) -> Option<&GlobalDeclRef>
Optionally returns references to the inner fields if this is a VTableDecl::VTable, otherwise None
Sourcepub fn into_v_table(self) -> Result<GlobalDeclRef, Self>
pub fn into_v_table(self) -> Result<GlobalDeclRef, Self>
Returns the inner fields if this is a VTableDecl::VTable, otherwise returns back the enum in the Err case of the result
Sourcepub unsafe fn into_v_table_unchecked(self) -> GlobalDeclRef
pub unsafe fn into_v_table_unchecked(self) -> GlobalDeclRef
Unchecked return of the inner fields of VTableDecl::VTable.
§Safety
Results in undefined behavior when it is the incorrect variant.
Sourcepub unsafe fn as_v_table_unchecked(&self) -> &GlobalDeclRef
pub unsafe fn as_v_table_unchecked(&self) -> &GlobalDeclRef
Unchecked reference of the inner fields of VTableDecl::VTable.
§Safety
Results in undefined behavior when it is the incorrect variant.
Sourcepub unsafe fn as_v_table_mut_unchecked(&mut self) -> &mut GlobalDeclRef
pub unsafe fn as_v_table_mut_unchecked(&mut self) -> &mut GlobalDeclRef
Unchecked mutable reference of the inner fields of VTableDecl::VTable.
§Safety
Results in undefined behavior when it is the incorrect variant.
Sourcepub fn is_unknown(&self) -> bool
pub fn is_unknown(&self) -> bool
Returns true if this is a VTableDecl::Unknown, otherwise false
Sourcepub fn as_unknown_mut(&mut self) -> Option<&mut String>
pub fn as_unknown_mut(&mut self) -> Option<&mut String>
Optionally returns mutable references to the inner fields if this is a VTableDecl::Unknown, otherwise None
Sourcepub fn as_unknown(&self) -> Option<&String>
pub fn as_unknown(&self) -> Option<&String>
Optionally returns references to the inner fields if this is a VTableDecl::Unknown, otherwise None
Sourcepub fn into_unknown(self) -> Result<String, Self>
pub fn into_unknown(self) -> Result<String, Self>
Returns the inner fields if this is a VTableDecl::Unknown, otherwise returns back the enum in the Err case of the result
Sourcepub unsafe fn into_unknown_unchecked(self) -> String
pub unsafe fn into_unknown_unchecked(self) -> String
Unchecked return of the inner fields of VTableDecl::Unknown.
§Safety
Results in undefined behavior when it is the incorrect variant.
Sourcepub unsafe fn as_unknown_unchecked(&self) -> &String
pub unsafe fn as_unknown_unchecked(&self) -> &String
Unchecked reference of the inner fields of VTableDecl::Unknown.
§Safety
Results in undefined behavior when it is the incorrect variant.
Sourcepub unsafe fn as_unknown_mut_unchecked(&mut self) -> &mut String
pub unsafe fn as_unknown_mut_unchecked(&mut self) -> &mut String
Unchecked mutable reference of the inner fields of VTableDecl::Unknown.
§Safety
Results in undefined behavior when it is the incorrect variant.
Trait Implementations§
Source§impl AstVisitable for VTableDecl
impl AstVisitable for VTableDecl
Source§fn drive<V: VisitAst>(&self, v: &mut V) -> ControlFlow<V::Break>
fn drive<V: VisitAst>(&self, v: &mut V) -> ControlFlow<V::Break>
visit_$any
method if it exists, otherwise visit_inner.Source§fn drive_mut<V: VisitAstMut>(&mut self, v: &mut V) -> ControlFlow<V::Break>
fn drive_mut<V: VisitAstMut>(&mut self, v: &mut V) -> ControlFlow<V::Break>
visit_$any
method if it exists, otherwise visit_inner.Source§fn drive_two<V: ZipAst>(&self, other: &Self, v: &mut V) -> ControlFlow<V::Break>
fn drive_two<V: ZipAst>(&self, other: &Self, v: &mut V) -> ControlFlow<V::Break>
visit_$any
method if it exists, otherwise visit_inner.Source§fn dyn_visit<T: AstVisitable>(&self, f: impl FnMut(&T))where
Self: Sized,
fn dyn_visit<T: AstVisitable>(&self, f: impl FnMut(&T))where
Self: Sized,
self, in pre-order traversal.Source§fn dyn_visit_mut<T: AstVisitable>(&mut self, f: impl FnMut(&mut T))where
Self: Sized,
fn dyn_visit_mut<T: AstVisitable>(&mut self, f: impl FnMut(&mut T))where
Self: Sized,
self, in pre-order traversal.Source§impl Clone for VTableDecl
impl Clone for VTableDecl
Source§fn clone(&self) -> VTableDecl
fn clone(&self) -> VTableDecl
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VTableDecl
impl Debug for VTableDecl
Source§impl<'de, __State: ?Sized> DeserializeState<'de, __State> for VTableDeclwhere
GlobalDeclRef: DeserializeState<'de, __State>,
String: DeserializeState<'de, __State>,
impl<'de, __State: ?Sized> DeserializeState<'de, __State> for VTableDeclwhere
GlobalDeclRef: DeserializeState<'de, __State>,
String: DeserializeState<'de, __State>,
fn deserialize_state<__D>(
__state: &__State,
__deserializer: __D,
) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'s, V> Drive<'s, V> for VTableDecl
impl<'s, V> Drive<'s, V> for VTableDecl
Source§fn drive_inner(&'s self, visitor: &mut V) -> ControlFlow<V::Break>
fn drive_inner(&'s self, visitor: &mut V) -> ControlFlow<V::Break>
v.visit() on the immediate contents of self.Source§impl<'s, V> DriveMut<'s, V> for VTableDecl
impl<'s, V> DriveMut<'s, V> for VTableDecl
Source§fn drive_inner_mut(&'s mut self, visitor: &mut V) -> ControlFlow<V::Break>
fn drive_inner_mut(&'s mut self, visitor: &mut V) -> ControlFlow<V::Break>
v.visit() on the immediate contents of self.Source§impl<'s, V> DriveTwo<'s, V> for VTableDecl
impl<'s, V> DriveTwo<'s, V> for VTableDecl
Source§fn drive_two_inner(
&'s self,
other: &'s Self,
visitor: &mut V,
) -> ControlFlow<V::Break>
fn drive_two_inner( &'s self, other: &'s Self, visitor: &mut V, ) -> ControlFlow<V::Break>
v.visit() on the immediate contents of self and other, if they correspond. If
the values don’t match up, this returns Break(Default::default()).Source§impl<__State: ?Sized> SerializeState<__State> for VTableDeclwhere
GlobalDeclRef: SerializeState<__State>,
String: SerializeState<__State>,
impl<__State: ?Sized> SerializeState<__State> for VTableDeclwhere
GlobalDeclRef: SerializeState<__State>,
String: SerializeState<__State>,
fn serialize_state<__S>(
&self,
__state: &__State,
__serializer: __S,
) -> Result<__S::Ok, __S::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for VTableDecl
impl RefUnwindSafe for VTableDecl
impl Send for VTableDecl
impl Sync for VTableDecl
impl Unpin for VTableDecl
impl UnsafeUnpin for VTableDecl
impl UnwindSafe for VTableDecl
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 moreimpl<T> Mappable for T
Source§impl<T> TyVisitable for Twhere
T: AstVisitable,
impl<T> TyVisitable for Twhere
T: AstVisitable,
Source§fn type_info(&self) -> TypeInfo
fn type_info(&self) -> TypeInfo
TypeInfo.Source§fn visit_vars(&mut self, v: &mut impl VarsVisitor)
fn visit_vars(&mut self, v: &mut impl VarsVisitor)
self, as seen from the outside of self. This means
that any variable bound inside self will be skipped, and all the seen De Bruijn indices
will count from the outside of self.Source§fn substitute(self, generics: &GenericArgs) -> Self
fn substitute(self, generics: &GenericArgs) -> Self
self by replacing them with the provided values.
Note: if self is an item that comes from a TraitDecl, you must use
substitute_with_self or substitute_inner_binder, otherwise you’ll get panics.Source§fn substitute_inner_binder(self, generics: &GenericArgs) -> Self
fn substitute_inner_binder(self, generics: &GenericArgs) -> Self
self by replacing them with the provided values.
This is appropriate when substituting an inner binder.Source§fn substitute_explicits(self, generics: &GenericArgs) -> Self
fn substitute_explicits(self, generics: &GenericArgs) -> Self
Source§fn substitute_with_self(
self,
generics: &GenericArgs,
self_ref: &TraitRefKind,
) -> Self
fn substitute_with_self( self, generics: &GenericArgs, self_ref: &TraitRefKind, ) -> Self
TraitRefKind::SelfId trait ref.Source§fn substitute_with_tref(self, tref: &TraitRef) -> Self
fn substitute_with_tref(self, tref: &TraitRef) -> Self
TraitRefKind::SelfId trait ref.Source§fn try_substitute_with_tref(
self,
tref: &TraitRef,
) -> Result<Self, GenericsMismatch>
fn try_substitute_with_tref( self, tref: &TraitRef, ) -> Result<Self, GenericsMismatch>
TraitRefKind::SelfId trait ref.fn try_substitute( self, generics: &GenericArgs, ) -> Result<Self, GenericsMismatch>
fn try_substitute_with_self( self, generics: &GenericArgs, self_ref: &TraitRefKind, ) -> Result<Self, GenericsMismatch>
Source§fn move_under_binder(self) -> Self
fn move_under_binder(self) -> Self
Source§fn move_under_binders(self, depth: DeBruijnId) -> Self
fn move_under_binders(self, depth: DeBruijnId) -> Self
depth binders.Source§fn move_from_under_binder(self) -> Option<Self>
fn move_from_under_binder(self) -> Option<Self>
Source§fn move_from_under_binders(self, depth: DeBruijnId) -> Option<Self>
fn move_from_under_binders(self, depth: DeBruijnId) -> Option<Self>
depth binders. Returns None if it contains a variable bound in
one of these depth binders.Source§fn visit_db_id<B>(
&mut self,
f: impl FnMut(&mut DeBruijnId) -> ControlFlow<B>,
) -> ControlFlow<B>
fn visit_db_id<B>( &mut self, f: impl FnMut(&mut DeBruijnId) -> ControlFlow<B>, ) -> ControlFlow<B>
self, as seen from the outside of self. This means
that any variable bound inside self will be skipped, and all the seen indices will count
from the outside of self.Source§fn has_escaping_region_var(&self) -> bool
fn has_escaping_region_var(&self) -> bool
Source§fn collect_regions(&self) -> SeqHashSet<Region>
fn collect_regions(&self) -> SeqHashSet<Region>
self.