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) -> Self
pub fn value(&self) -> String
sourcepub fn parse<T: Parse>(&self) -> Result<T>
pub fn parse<T: Parse>(&self) -> Result<T>
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: Parser>(&self, parser: F) -> Result<F::Output>
pub fn parse_with<F: Parser>(&self, parser: F) -> Result<F::Output>
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 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
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.