pub struct LitStr { /* private fields */ }
Expand description
A UTF-8 string literal: "foo"
.
Implementations§
Source§impl LitStr
impl LitStr
pub fn new(value: &str, span: Span) -> LitStr
pub fn value(&self) -> String
Sourcepub fn parse<T>(&self) -> Result<T, Error>where
T: Parse,
pub fn parse<T>(&self) -> Result<T, Error>where
T: Parse,
Parse a syntax tree node from the content of this string literal.
All spans in the syntax tree will point to the span of this LitStr
.
§Example
use syn::{Attribute, Error, Expr, Lit, Meta, Path, Result};
// Parses the path from an attribute that looks like:
//
// #[path = "a::b::c"]
//
// or returns `None` if the input is some other attribute.
fn get_path(attr: &Attribute) -> Result<Option<Path>> {
if !attr.path().is_ident("path") {
return Ok(None);
}
if let Meta::NameValue(meta) = &attr.meta {
if let Expr::Lit(expr) = &meta.value {
if let Lit::Str(lit_str) = &expr.lit {
return lit_str.parse().map(Some);
}
}
}
let message = "expected #[path = \"...\"]";
Err(Error::new_spanned(attr, message))
}
Sourcepub fn parse_with<F>(&self, parser: F) -> Result<<F as Parser>::Output, Error>where
F: Parser,
pub fn parse_with<F>(&self, parser: F) -> Result<<F as Parser>::Output, Error>where
F: Parser,
Invoke parser on the content of this string literal.
All spans in the syntax tree will point to the span of this LitStr
.
§Example
let lit_str: LitStr = /* ... */;
// Parse a string literal like "a::b::c" into a Path, not allowing
// generic arguments on any of the path segments.
let basic_path = lit_str.parse_with(syn::Path::parse_mod_style)?;
pub fn span(&self) -> Span
pub fn set_span(&mut self, span: Span)
pub fn suffix(&self) -> &str
pub fn token(&self) -> Literal
Trait Implementations§
Source§impl ToTokens for LitStr
impl ToTokens for LitStr
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 LitStr
impl Token for LitStr
Auto Trait Implementations§
impl Freeze for LitStr
impl RefUnwindSafe for LitStr
impl !Send for LitStr
impl !Sync for LitStr
impl Unpin for LitStr
impl UnwindSafe for LitStr
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.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> ⓘ
Converts
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> ⓘ
Converts
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> QuickToOwned for Twhere
T: ToOwned,
impl<T> QuickToOwned for Twhere
T: ToOwned,
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.