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) -> bool
Available on crate feature parsing only.
pub fn is_ident<I: ?Sized>(&self, ident: &I) -> bool
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 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,
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§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.