pub enum FunSource {
Normal,
AdtConstructor,
TraitDefault {
trait_ref: TraitDeclRef,
item_id: TraitMethodId,
},
TraitImpl {
impl_ref: TraitImplRef,
trait_ref: TraitDeclRef,
item_id: TraitMethodId,
reuses_default: bool,
},
VTableShim,
GlobalInitializer(GlobalDeclRef),
TargetDependent {
dispatcher: FunDeclRef,
},
}Expand description
Where a given function came from.
Variants§
Normal
A normal function.
AdtConstructor
A synthetic function representing an ADT constructor.
TraitDefault
A default method in a trait declaration.
Fields
trait_ref: TraitDeclRefThe trait declaration this item belongs to.
item_id: TraitMethodIdThe method this corresponds to.
TraitImpl
A method in a trait implementation.
Fields
impl_ref: TraitImplRefThe trait implementation the method belongs to.
trait_ref: TraitDeclRefThe trait declaration that the impl block implements.
item_id: TraitMethodIdThe method this corresponds to.
VTableShim
Wraps a concrete implementation of a method into a function that takes dyn Trait as its
Self type. This shim casts the receiver to the known concrete type and calls the real
method.
GlobalInitializer(GlobalDeclRef)
The initializer for a global.
TargetDependent
A target-specific variant behind a TargetDispatch façade. The dispatcher is the function
with the Body::TargetDispatch body that dispatches to this function.
Fields
dispatcher: FunDeclRefTrait Implementations§
Source§impl AstVisitable for FunSource
impl AstVisitable for FunSource
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<'de, __State: ?Sized> DeserializeState<'de, __State> for FunSourcewhere
TraitDeclRef: DeserializeState<'de, __State>,
TraitMethodId: DeserializeState<'de, __State>,
TraitImplRef: DeserializeState<'de, __State>,
bool: DeserializeState<'de, __State>,
GlobalDeclRef: DeserializeState<'de, __State>,
FunDeclRef: DeserializeState<'de, __State>,
impl<'de, __State: ?Sized> DeserializeState<'de, __State> for FunSourcewhere
TraitDeclRef: DeserializeState<'de, __State>,
TraitMethodId: DeserializeState<'de, __State>,
TraitImplRef: DeserializeState<'de, __State>,
bool: DeserializeState<'de, __State>,
GlobalDeclRef: DeserializeState<'de, __State>,
FunDeclRef: 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 FunSourcewhere
V: Visitor + Visit<'s, TraitDeclRef> + Visit<'s, TraitMethodId> + Visit<'s, TraitImplRef> + Visit<'s, bool> + Visit<'s, GlobalDeclRef> + Visit<'s, FunDeclRef>,
impl<'s, V> Drive<'s, V> for FunSourcewhere
V: Visitor + Visit<'s, TraitDeclRef> + Visit<'s, TraitMethodId> + Visit<'s, TraitImplRef> + Visit<'s, bool> + Visit<'s, GlobalDeclRef> + Visit<'s, FunDeclRef>,
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 FunSourcewhere
V: Visitor + VisitMut<'s, TraitDeclRef> + VisitMut<'s, TraitMethodId> + VisitMut<'s, TraitImplRef> + VisitMut<'s, bool> + VisitMut<'s, GlobalDeclRef> + VisitMut<'s, FunDeclRef>,
impl<'s, V> DriveMut<'s, V> for FunSourcewhere
V: Visitor + VisitMut<'s, TraitDeclRef> + VisitMut<'s, TraitMethodId> + VisitMut<'s, TraitImplRef> + VisitMut<'s, bool> + VisitMut<'s, GlobalDeclRef> + VisitMut<'s, FunDeclRef>,
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 FunSourcewhere
V: Visitor<Break: Default> + VisitTwo<'s, TraitDeclRef> + VisitTwo<'s, TraitMethodId> + VisitTwo<'s, TraitImplRef> + VisitTwo<'s, bool> + VisitTwo<'s, GlobalDeclRef> + VisitTwo<'s, FunDeclRef>,
impl<'s, V> DriveTwo<'s, V> for FunSourcewhere
V: Visitor<Break: Default> + VisitTwo<'s, TraitDeclRef> + VisitTwo<'s, TraitMethodId> + VisitTwo<'s, TraitImplRef> + VisitTwo<'s, bool> + VisitTwo<'s, GlobalDeclRef> + VisitTwo<'s, FunDeclRef>,
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 FunSourcewhere
TraitDeclRef: SerializeState<__State>,
TraitMethodId: SerializeState<__State>,
TraitImplRef: SerializeState<__State>,
bool: SerializeState<__State>,
GlobalDeclRef: SerializeState<__State>,
FunDeclRef: SerializeState<__State>,
impl<__State: ?Sized> SerializeState<__State> for FunSourcewhere
TraitDeclRef: SerializeState<__State>,
TraitMethodId: SerializeState<__State>,
TraitImplRef: SerializeState<__State>,
bool: SerializeState<__State>,
GlobalDeclRef: SerializeState<__State>,
FunDeclRef: 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 FunSource
impl RefUnwindSafe for FunSource
impl Send for FunSource
impl Sync for FunSource
impl Unpin for FunSource
impl UnsafeUnpin for FunSource
impl UnwindSafe for FunSource
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 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.