SingleAttributeParser

Trait SingleAttributeParser 

Source
pub(crate) trait SingleAttributeParser<S: Stage>: 'static {
    const PATH: &[Symbol];
    const ATTRIBUTE_ORDER: AttributeOrder;
    const ON_DUPLICATE: OnDuplicate<S>;
    const ALLOWED_TARGETS: AllowedTargets;
    const TEMPLATE: AttributeTemplate;

    // Required method
    fn convert(
        cx: &mut AcceptContext<'_, '_, S>,
        args: &ArgParser<'_>,
    ) -> Option<AttributeKind>;
}
Expand description

Alternative to AttributeParser that automatically handles state management. A slightly simpler and more restricted way to convert attributes. Assumes that an attribute can only appear a single time on an item, and errors when it sees more.

Single<T> where T: SingleAttributeParser implements AttributeParser.

SingleAttributeParser can only convert attributes one-to-one, and cannot combine multiple attributes together like is necessary for #[stable()] and #[unstable()] for example.

Required Associated Constants§

Source

const PATH: &[Symbol]

The single path of the attribute this parser accepts.

If you need the parser to accept more than one path, use AttributeParser instead

Source

const ATTRIBUTE_ORDER: AttributeOrder

Configures the precedence of attributes with the same PATH on a syntax node.

Source

const ON_DUPLICATE: OnDuplicate<S>

Configures what to do when when the same attribute is applied more than once on the same syntax node.

ATTRIBUTE_ORDER specified which one is assumed to be correct, and this specified whether to, for example, warn or error on the other one.

Source

const ALLOWED_TARGETS: AllowedTargets

Source

const TEMPLATE: AttributeTemplate

The template this attribute parser should implement. Used for diagnostics.

Required Methods§

Source

fn convert( cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>, ) -> Option<AttributeKind>

Converts a single syntactical attribute to a single semantic attribute, or AttributeKind

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<S: Stage> SingleAttributeParser<S> for CoverageParser

Source§

impl<S: Stage> SingleAttributeParser<S> for ExportNameParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for OptimizeParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for SanitizeParser

Source§

impl<S: Stage> SingleAttributeParser<S> for CrateNameParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const TEMPLATE: AttributeTemplate

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

impl<S: Stage> SingleAttributeParser<S> for DeprecationParser

Source§

impl<S: Stage> SingleAttributeParser<S> for DummyParser

Source§

impl<S: Stage> SingleAttributeParser<S> for InlineParser

Source§

const PATH: &'static [Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for RustcForceInlineParser

Source§

const PATH: &'static [Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for LinkNameParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for LinkOrdinalParser

Source§

impl<S: Stage> SingleAttributeParser<S> for LinkSectionParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for LinkageParser

Source§

impl<S: Stage> SingleAttributeParser<S> for MustUseParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for PathParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for ProcMacroDeriveParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error

Source§

const ALLOWED_TARGETS: AllowedTargets = PROC_MACRO_ALLOWED_TARGETS

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for RustcBuiltinMacroParser

Source§

impl<S: Stage> SingleAttributeParser<S> for CustomMirParser

Source§

impl<S: Stage> SingleAttributeParser<S> for RustcLayoutScalarValidRangeEnd

Source§

const PATH: &'static [Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for RustcLayoutScalarValidRangeStart

Source§

const PATH: &'static [Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepInnermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for RustcObjectLifetimeDefaultParser

Source§

impl<S: Stage> SingleAttributeParser<S> for IgnoreParser

Source§

impl<S: Stage> SingleAttributeParser<S> for ShouldPanicParser

Source§

const PATH: &[Symbol]

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::WarnButFutureError

Source§

const ALLOWED_TARGETS: AllowedTargets

Source§

const TEMPLATE: AttributeTemplate

Source§

impl<S: Stage> SingleAttributeParser<S> for SkipDuringMethodDispatchParser

Source§

impl<S: Stage> SingleAttributeParser<S> for TransparencyParser

Source§

impl<T: NoArgsAttributeParser<S>, S: Stage> SingleAttributeParser<S> for WithoutArgs<T, S>

Source§

const PATH: &[Symbol] = T::PATH

Source§

const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepOutermost

Source§

const ON_DUPLICATE: OnDuplicate<S> = T::ON_DUPLICATE

Source§

const ALLOWED_TARGETS: AllowedTargets = T::ALLOWED_TARGETS

Source§

const TEMPLATE: AttributeTemplate