pub struct SyntaxExtension {
    pub kind: SyntaxExtensionKind,
    pub span: Span,
    pub allow_internal_unstable: Option<Lrc<[Symbol]>>,
    pub stability: Option<Stability>,
    pub deprecation: Option<Deprecation>,
    pub helper_attrs: Vec<Symbol>,
    pub edition: Edition,
    pub builtin_name: Option<Symbol>,
    pub allow_internal_unsafe: bool,
    pub local_inner_macros: bool,
    pub collapse_debuginfo: bool,
}
Expand description

A struct representing a macro definition in “lowered” form ready for expansion.

Fields§

§kind: SyntaxExtensionKind

A syntax extension kind.

§span: Span

Span of the macro definition.

§allow_internal_unstable: Option<Lrc<[Symbol]>>

List of unstable features that are treated as stable inside this macro.

§stability: Option<Stability>

The macro’s stability info.

§deprecation: Option<Deprecation>

The macro’s deprecation info.

§helper_attrs: Vec<Symbol>

Names of helper attributes registered by this macro.

§edition: Edition

Edition of the crate in which this macro is defined.

§builtin_name: Option<Symbol>

Built-in macros have a couple of special properties like availability in #[no_implicit_prelude] modules, so we have to keep this flag.

§allow_internal_unsafe: bool

Suppresses the unsafe_code lint for code produced by this macro.

§local_inner_macros: bool

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

§collapse_debuginfo: bool

Should debuginfo for the macro be collapsed to the outermost expansion site (in other words, was the macro definition annotated with #[collapse_debuginfo])?

Implementations§

source§

impl SyntaxExtension

source

pub fn macro_kind(&self) -> MacroKind

Returns which kind of macro calls this syntax extension.

source

pub fn default(kind: SyntaxExtensionKind, edition: Edition) -> SyntaxExtension

Constructs a syntax extension with default properties.

source

fn collapse_debuginfo_by_name( sess: &Session, attr: &Attribute ) -> CollapseMacroDebuginfo

source

fn get_collapse_debuginfo( sess: &Session, attrs: &[Attribute], is_local: bool ) -> bool

if-ext - if macro from different crate (related to callsite code) | cmd \ attr | no | (unspecified) | external | yes | | no | no | no | no | no | | (unspecified) | no | no | if-ext | yes | | external | no | if-ext | if-ext | yes | | yes | yes | yes | yes | yes |

source

pub fn new( sess: &Session, features: &Features, kind: SyntaxExtensionKind, span: Span, helper_attrs: Vec<Symbol>, edition: Edition, name: Symbol, attrs: &[Attribute], is_local: bool ) -> SyntaxExtension

Constructs a syntax extension with the given properties and other properties converted from attributes.

source

pub fn dummy_bang(edition: Edition) -> SyntaxExtension

A dummy bang macro foo!().

source

pub fn dummy_derive(edition: Edition) -> SyntaxExtension

A dummy derive macro #[derive(Foo)].

source

pub fn non_macro_attr(edition: Edition) -> SyntaxExtension

source

pub fn expn_data( &self, parent: LocalExpnId, call_site: Span, descr: Symbol, macro_def_id: Option<DefId>, parent_module: Option<DefId> ) -> ExpnData

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Aligned for T

source§

const ALIGN: Alignment = _

Alignment of Self.
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T, R> CollectAndApply<T, R> for T

source§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

§

type Output = R

§

impl<T> Filterable for T

§

fn filterable( self, filter_name: &'static str ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>

Creates a filterable data provider with the given name for debugging. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

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

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<'a, T> Captures<'a> for T
where T: ?Sized,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

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: 120 bytes