pub struct ExpnInfo {
pub call_site: Span,
pub def_site: Option<Span>,
pub format: ExpnFormat,
pub allow_internal_unstable: bool,
pub allow_internal_unsafe: bool,
pub local_inner_macros: bool,
pub edition: Edition,
}
Extra information for tracking spans of macro and syntax sugar expansion
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 ExpnInfo, with the call_site
pointing to the foo!
invocation.
The span of the macro definition itself. The macro may not
have a sensible definition span (e.g., something defined
completely inside libsyntax) in which case this is None.
This span serves only informational purpose and is not used for resolution.
The format with which the macro was invoked.
Whether the macro is allowed to use #[unstable]/feature-gated
features internally without forcing the whole crate to opt-in
to them.
Whether the macro is allowed to use unsafe
internally
even if the user crate has #![forbid(unsafe_code)]
.
Enables the macro helper hack (ident!(...)
-> $crate::ident!(...)
)
for a given macro.
Edition of the crate in which the macro is defined.
Feeds this value into the given [Hasher
]. Read more
Feeds a slice of this type into the given [Hasher
]. Read more
Performs copy-assignment from source
. Read more
Formats the value using the given formatter. Read more
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Mutably borrows from an owned value. Read more
Create an error for a missing method specialization. Defaults to panicking with type, trait & method names. S
is the encoder/decoder state type, T
is the type being encoded/decoded, and the arguments are the names of the trait and method that should've been overridden. Read more