pub struct MetaItemParser {
path: OwnedPathParser,
args: ArgParser,
args_checked: AtomicBool,
}Expand description
Utility that deconstructs a MetaItem into usable parts.
MetaItems are syntactically extremely flexible, but specific attributes want to parse them in custom, more restricted ways. This can be done using this struct.
MetaItems consist of some path, and some args. The args could be empty. In other words:
name-> args are emptyname(...)-> args are alist, which is the bit between the parenthesesname = value-> arg isname_value, where the argument is the= valuepart
The syntax of MetaItems can be found at https://doc.rust-lang.org/reference/attributes.html
Fields§
§path: OwnedPathParser§args: ArgParser§args_checked: AtomicBoolWhether the args of this meta item have been looked at.
This is tracked because if the arguments of a MetaItemParser are ignored, this is probably a mistake
Implementations§
Source§impl MetaItemParser
impl MetaItemParser
Sourcepub fn ident(&self) -> Option<Ident>
pub fn ident(&self) -> Option<Ident>
For a single-segment meta item, returns its name; otherwise, returns None.
pub fn span(&self) -> Span
Sourcepub fn path(&self) -> &OwnedPathParser
pub fn path(&self) -> &OwnedPathParser
Gets just the path, without the args. Some examples:
#[rustfmt::skip]:rustfmt::skipis a path#[allow(clippy::complexity)]:clippy::complexityis a path#[inline]:inlineis a single segment path
Sourcepub fn word_is(&self, sym: Symbol) -> Option<&ArgParser>
pub fn word_is(&self, sym: Symbol) -> Option<&ArgParser>
Asserts that this MetaItem starts with a word, or single segment path.
Some examples:
#[inline]:inlineis a word#[rustfmt::skip]:rustfmt::skipis a path, and not a word and should instead be parsed usingpath
Sourcepub fn ignore_args(&self)
pub fn ignore_args(&self)
Explicitly ignore the arguments, disarming the arguments-used check
pub fn are_args_checked(&self) -> bool
Trait Implementations§
Source§impl Debug for MetaItemParser
impl Debug for MetaItemParser
Source§impl ExpectNameValue for MetaItemParser
impl ExpectNameValue for MetaItemParser
type Output<'a> = (Ident, &'a NameValueParser)
fn expect_name_value<'a, 'f, 'sess>( &'a self, cx: &mut AcceptContext<'f, 'sess>, _span: Span, name: Option<Symbol>, ) -> Option<Self::Output<'a>>
Auto Trait Implementations§
impl !Freeze for MetaItemParser
impl DynSend for MetaItemParser
impl DynSync for MetaItemParser
impl RefUnwindSafe for MetaItemParser
impl Send for MetaItemParser
impl Sync for MetaItemParser
impl Unpin for MetaItemParser
impl UnsafeUnpin for MetaItemParser
impl UnwindSafe for MetaItemParser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
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: 88 bytes