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>
Available on crate feature parsing
only.
pub fn parse<T: Parse>(&self) -> Result<T>
parsing
only.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>
Available on crate feature parsing
only.
pub fn parse_with<F: Parser>(&self, parser: F) -> Result<F::Output>
parsing
only.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 Parse for LitStr
Available on crate feature parsing
only.
impl Parse for LitStr
Available on crate feature
parsing
only.fn parse(input: ParseStream<'_>) -> Result<Self>
Source§impl ToTokens for LitStr
Available on crate feature printing
only.
impl ToTokens for LitStr
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 LitStr
Available on crate feature
extra-traits
only.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<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.Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes