pub struct Path {
pub leading_colon: Option<PathSep>,
pub segments: Punctuated<PathSegment, PathSep>,
}
Expand description
A path at which a named item is exported (e.g. std::collections::HashMap
).
Fields§
§leading_colon: Option<PathSep>
§segments: Punctuated<PathSegment, PathSep>
Implementations§
source§impl Path
impl Path
sourcepub fn parse_mod_style(input: ParseStream<'_>) -> Result<Self>
pub fn parse_mod_style(input: ParseStream<'_>) -> Result<Self>
Parse a Path
containing no path arguments on any of its segments.
§Example
use syn::{Path, Result, Token};
use syn::parse::{Parse, ParseStream};
// A simplified single `use` statement like:
//
// use std::collections::HashMap;
//
// Note that generic parameters are not allowed in a `use` statement
// so the following must not be accepted.
//
// use a::<b>::c;
struct SingleUse {
use_token: Token![use],
path: Path,
}
impl Parse for SingleUse {
fn parse(input: ParseStream) -> Result<Self> {
Ok(SingleUse {
use_token: input.parse()?,
path: input.call(Path::parse_mod_style)?,
})
}
}
source§impl Path
impl Path
sourcepub fn is_ident<I>(&self, ident: &I) -> bool
pub fn is_ident<I>(&self, ident: &I) -> bool
Determines whether this is a path of length 1 equal to the given ident.
For them to compare equal, it must be the case that:
- the path has no leading colon,
- the number of path segments is 1,
- the first path segment has no angle bracketed or parenthesized path arguments, and
- the ident of the first path segment is equal to the given one.
§Example
use proc_macro2::TokenStream;
use syn::{Attribute, Error, Meta, Result};
fn get_serde_meta_item(attr: &Attribute) -> Result<Option<&TokenStream>> {
if attr.path().is_ident("serde") {
match &attr.meta {
Meta::List(meta) => Ok(Some(&meta.tokens)),
bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
}
} else {
Ok(None)
}
}
sourcepub fn get_ident(&self) -> Option<&Ident>
pub fn get_ident(&self) -> Option<&Ident>
If this path consists of a single ident, returns the ident.
A path is considered an ident if:
- the path has no leading colon,
- the number of path segments is 1, and
- the first path segment has no angle bracketed or parenthesized path arguments.
sourcepub fn require_ident(&self) -> Result<&Ident>
pub fn require_ident(&self) -> Result<&Ident>
An error if this path is not a single ident, as defined in get_ident
.
Trait Implementations§
source§impl ToTokens for Path
impl ToTokens for Path
source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
source§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
source§fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
impl Eq for Path
Auto Trait Implementations§
impl Freeze for Path
impl RefUnwindSafe for Path
impl !Send for Path
impl !Sync for Path
impl Unpin for Path
impl UnwindSafe for Path
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> Spanned for Twhere
T: Spanned + ?Sized,
impl<T> Spanned for Twhere
T: Spanned + ?Sized,
source§fn span(&self) -> Span
fn span(&self) -> Span
Returns a
Span
covering the complete contents of this syntax tree
node, or Span::call_site()
if this node is empty.