pub struct Path {
pub leading_colon: Option<Colon2>,
pub segments: Punctuated<PathSegment, Colon2>,
}
Available on crate features
full
or derive
only.Expand description
A path at which a named item is exported (e.g. std::collections::HashMap
).
This type is available only if Syn is built with the "derive"
or "full"
feature.
Fields§
§leading_colon: Option<Colon2>
§segments: Punctuated<PathSegment, Colon2>
Implementations§
source§impl Path
impl Path
sourcepub fn parse_mod_style(input: ParseStream<'_>) -> Result<Self>
Available on crate feature parsing
only.
pub fn parse_mod_style(input: ParseStream<'_>) -> Result<Self>
parsing
only.Parse a Path
containing no path arguments on any of its segments.
This function is available only if Syn is built with the "parsing"
feature.
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)?,
})
}
}
sourcepub fn is_ident<I: ?Sized>(&self, ident: &I) -> boolwhere
Ident: PartialEq<I>,
Available on crate feature parsing
only.
pub fn is_ident<I: ?Sized>(&self, ident: &I) -> boolwhere Ident: PartialEq<I>,
parsing
only.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.
This function is available only if Syn is built with the "parsing"
feature.
Example
use syn::{Attribute, Error, Meta, NestedMeta, Result};
fn get_serde_meta_items(attr: &Attribute) -> Result<Vec<NestedMeta>> {
if attr.path.is_ident("serde") {
match attr.parse_meta()? {
Meta::List(meta) => Ok(Vec::from_iter(meta.nested)),
bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
}
} else {
Ok(Vec::new())
}
}
sourcepub fn get_ident(&self) -> Option<&Ident>
Available on crate feature parsing
only.
pub fn get_ident(&self) -> Option<&Ident>
parsing
only.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.
This function is available only if Syn is built with the "parsing"
feature.
Trait Implementations§
source§impl Parse for Path
Available on crate feature parsing
only.
impl Parse for Path
Available on crate feature
parsing
only.fn parse(input: ParseStream<'_>) -> Result<Self>
source§impl PartialEq<Path> for Path
Available on crate feature extra-traits
only.
impl PartialEq<Path> for Path
Available on crate feature
extra-traits
only.source§impl ToTokens for Path
Available on crate feature printing
only.
impl ToTokens for Path
Available on crate feature
printing
only.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
Available on crate feature
extra-traits
only.Auto Trait Implementations§
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> Spanned for Twhere
T: Spanned + ?Sized,
impl<T> Spanned for Twhere T: Spanned + ?Sized,
source§fn span(&self) -> Span
fn span(&self) -> Span
Available on crate features
parsing
and printing
only.Returns a
Span
covering the complete contents of this syntax tree
node, or Span::call_site()
if this node is empty.