Struct rustc_span::hygiene::ExpnId
source · Expand description
A unique ID associated with a macro invocation and expansion.
Fields
krate: CrateNum
local_id: ExpnIndex
Implementations
sourceimpl ExpnId
impl ExpnId
sourcepub const fn root() -> ExpnId
pub const fn root() -> ExpnId
The ID of the theoretical expansion that generates freshly parsed, unexpanded AST. Invariant: we do not create any ExpnId with local_id == 0 and krate != 0.
pub fn expn_hash(self) -> ExpnHash
pub fn from_hash(hash: ExpnHash) -> Option<ExpnId>
pub fn as_local(self) -> Option<LocalExpnId>
pub fn expect_local(self) -> LocalExpnId
pub fn expn_data(self) -> ExpnData
pub fn is_descendant_of(self, ancestor: ExpnId) -> bool
sourcepub fn outer_expn_is_descendant_of(self, ctxt: SyntaxContext) -> bool
pub fn outer_expn_is_descendant_of(self, ctxt: SyntaxContext) -> bool
expn_id.outer_expn_is_descendant_of(ctxt)
is equivalent to but faster than
expn_id.is_descendant_of(ctxt.outer_expn())
.
sourcepub fn expansion_cause(self) -> Option<Span>
pub fn expansion_cause(self) -> Option<Span>
Returns span for the macro which originally caused this expansion to happen.
Stops backtracing at include! boundary.
Trait Implementations
sourceimpl<CTX: HashStableContext> HashStable<CTX> for ExpnId
impl<CTX: HashStableContext> HashStable<CTX> for ExpnId
fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher)
impl Copy for ExpnId
impl Eq for ExpnId
impl StructuralEq for ExpnId
impl StructuralPartialEq for ExpnId
Auto Trait Implementations
impl RefUnwindSafe for ExpnId
impl Send for ExpnId
impl Sync for ExpnId
impl Unpin for ExpnId
impl UnwindSafe for ExpnId
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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