pub struct CrateItem(pub DefId);Expand description
A definition in the local crate (function, static, const, or constructor).
Obtain instances via all_local_items() or Crate::fn_defs().
Use CrateItem::body() to access the MIR, or convert to an
Instance for monomorphized analysis.
Tuple Fields§
§0: DefIdImplementations§
Source§impl CrateItem
impl CrateItem
Sourcepub fn expect_body(&self) -> Body
pub fn expect_body(&self) -> Body
Return the MIR body of this item, panicking if unavailable.
Prefer body() for a non-panicking alternative.
Sourcepub fn body(&self) -> Option<Body>
pub fn body(&self) -> Option<Body>
Return the MIR body of this item, or None if unavailable.
A body may be unavailable for foreign items or compiler built-ins.
Sourcepub fn kind(&self) -> ItemKind
pub fn kind(&self) -> ItemKind
Return what kind of item this is (function, static, const, or constructor).
Sourcepub fn requires_monomorphization(&self) -> bool
pub fn requires_monomorphization(&self) -> bool
Check whether this item is generic and requires monomorphization.
Returns true if this item, or any enclosing definition (e.g., the impl
block it belongs to), has type or const generic parameters.
Sourcepub fn ty(&self) -> Ty
pub fn ty(&self) -> Ty
Return the type of this item.
For functions, this returns the function type (e.g., fn(u32) -> bool).
Sourcepub fn is_foreign_item(&self) -> bool
pub fn is_foreign_item(&self) -> bool
Check whether this item was declared inside an extern block.
Foreign items (e.g., extern "C" { fn foo(); }) are locally defined
declarations of externally-linked symbols.
Trait Implementations§
impl Copy for CrateItem
Source§impl CrateDef for CrateItem
impl CrateDef for CrateItem
Source§fn trimmed_name(&self) -> Symbol
fn trimmed_name(&self) -> Symbol
Source§fn krate(&self) -> Crate
fn krate(&self) -> Crate
Source§fn tool_attrs(&self, attr: &[Symbol]) -> Vec<Attribute>
fn tool_attrs(&self, attr: &[Symbol]) -> Vec<Attribute>
Source§fn all_tool_attrs(&self) -> Vec<Attribute>
fn all_tool_attrs(&self) -> Vec<Attribute>
Source§impl CrateDefType for CrateItem
impl CrateDefType for CrateItem
Source§fn ty_with_args(&self, args: &GenericArgs) -> Ty
fn ty_with_args(&self, args: &GenericArgs) -> Ty
args. Read moreimpl Eq for CrateItem
impl StructuralPartialEq for CrateItem
Source§impl TryFrom<CrateItem> for Instance
Try to convert a crate item into an instance.
The item cannot be generic in order to be converted into an instance.
impl TryFrom<CrateItem> for Instance
Try to convert a crate item into an instance. The item cannot be generic in order to be converted into an instance.
Auto Trait Implementations§
impl !DynSend for CrateItem
impl !DynSync for CrateItem
impl !Send for CrateItem
impl !Sync for CrateItem
impl Freeze for CrateItem
impl RefUnwindSafe for CrateItem
impl Unpin for CrateItem
impl UnsafeUnpin for CrateItem
impl UnwindSafe for CrateItem
Blanket Implementations§
§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [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,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
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§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.impl<T> ErasedDestructor for Twhere
T: 'static,
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§impl<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes