[][src]Struct syntax::source_map::ExpnData

pub struct ExpnData {
    pub kind: ExpnKind,
    pub parent: ExpnId,
    pub call_site: Span,
    pub def_site: Span,
    pub default_transparency: Transparency,
    pub allow_internal_unstable: Option<Rc<[Symbol]>>,
    pub allow_internal_unsafe: bool,
    pub local_inner_macros: bool,
    pub edition: Edition,
}

A subset of properties from both macro definition and macro call available through global data. Avoid using this if you have access to the original definition or call structures.

Fields

kind: ExpnKind

The kind of this expansion - macro or compiler desugaring.

parent: ExpnId

The expansion that produced this expansion.

call_site: Span

The location of the actual macro invocation or syntax sugar , e.g. let x = foo!(); or if let Some(y) = x {}

This may recursively refer to other macro invocations, e.g., if foo!() invoked bar!() internally, and there was an expression inside bar!; the call_site of the expression in the expansion would point to the bar! invocation; that call_site span would have its own ExpnData, with the call_site pointing to the foo! invocation.

def_site: Span

The span of the macro definition (possibly dummy). This span serves only informational purpose and is not used for resolution.

default_transparency: Transparency

Transparency used by apply_mark for the expansion with this expansion data by default.

allow_internal_unstable: Option<Rc<[Symbol]>>

List of #[unstable]/feature-gated features that the macro is allowed to use internally without forcing the whole crate to opt-in to them.

allow_internal_unsafe: bool

Whether the macro is allowed to use unsafe internally even if the user crate has #![forbid(unsafe_code)].

local_inner_macros: bool

Enables the macro helper hack (ident!(...) -> $crate::ident!(...)) for a given macro.

edition: Edition

Edition of the crate in which the macro is defined.

Methods

impl ExpnData[src]

pub fn default(kind: ExpnKind, call_site: Span, edition: Edition) -> ExpnData[src]

Constructs expansion data with default properties.

pub fn allow_unstable(
    kind: ExpnKind,
    call_site: Span,
    edition: Edition,
    allow_internal_unstable: Rc<[Symbol]>
) -> ExpnData
[src]

pub fn is_root(&self) -> bool[src]

Trait Implementations

impl Encodable for ExpnData[src]

impl Debug for ExpnData[src]

impl Decodable for ExpnData[src]

impl Clone for ExpnData[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl !Sync for ExpnData

impl !Send for ExpnData

impl Unpin for ExpnData

impl UnwindSafe for ExpnData

impl !RefUnwindSafe for ExpnData

Blanket Implementations

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Erased for T[src]

impl<T> Encodable for T where
    T: UseSpecializedEncodable + ?Sized
[src]

impl<T> Decodable for T where
    T: UseSpecializedDecodable
[src]

impl<E> SpecializationError for E[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,