pub struct Paren<T> { /* private fields */ }
Expand description
Parses a subexpression inside parentheses.
let answer: Paren<LitInt> = parse_quote!{ (42) };
assert_eq!(answer.into_inner(), LitInt::from(42));
let answer: Paren<LitInt> = parse_quote!{ 42 };
let answer: Paren<LitInt> = LitInt::from(43).into();
assert_eq!(
answer.to_token_stream().to_string(),
quote::quote!{(43)}.to_string(),
);
Implementations
Trait Implementations
sourceimpl<T: ToTokens> ToTokens for Paren<T>
impl<T: ToTokens> ToTokens for Paren<T>
sourcefn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Write self
to the given TokenStream
. Read more
sourcefn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
Convert self
directly into a TokenStream
object. Read more
sourcefn into_token_stream(self) -> TokenStream
fn into_token_stream(self) -> TokenStream
Convert self
directly into a TokenStream
object. Read more
impl<T: Copy> Copy for Paren<T>
impl<T: Eq> Eq for Paren<T>
impl<T> StructuralEq for Paren<T>
impl<T> StructuralPartialEq for Paren<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for Paren<T> where
T: RefUnwindSafe,
impl<T> !Send for Paren<T>
impl<T> !Sync for Paren<T>
impl<T> Unpin for Paren<T> where
T: Unpin,
impl<T> UnwindSafe for Paren<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Spanned for T where
T: Spanned + ?Sized,
impl<T> Spanned for T where
T: Spanned + ?Sized,
sourcefn 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. Read more
sourceimpl<T> SpannedExt for T where
T: Spanned + ?Sized,
impl<T> SpannedExt for T where
T: Spanned + ?Sized,
sourcefn byte_range(&self, source: &str) -> Range<usize>
fn byte_range(&self, source: &str) -> Range<usize>
TODO(H2CO3): a faster, less naive implementation would be great.
We should use the byte offset of start
to compute that of end
,
sparing the double scan of the source up until the start location.
let source = r#"
-3.667
1248 "string ű literal"
"wíőzs"
"#;
let tokens: Many<Lit> = source.parse()?;
assert_eq!(tokens.len(), 4);
assert_eq!(tokens[0].byte_range(source), 4..10);
assert_eq!(tokens[1].byte_range(source), 13..17);
assert_eq!(tokens[2].byte_range(source), 19..38);
assert_eq!(tokens[3].byte_range(source), 45..54);
sourcefn char_range(&self, source: &str) -> Range<usize>
fn char_range(&self, source: &str) -> Range<usize>
TODO(H2CO3): a faster, less naive implementation would be great.
We should use the char offset of start
to compute that of end
,
sparing the double scan of the source up until the start location.
let source = r#"
-3.667
1248 "string ű literal"
"wíőzs"
"#;
let tokens: Many<Lit> = source.parse()?;
assert_eq!(tokens.len(), 4);
assert_eq!(tokens[0].char_range(source), 4..10);
assert_eq!(tokens[1].char_range(source), 13..17);
assert_eq!(tokens[2].char_range(source), 19..37);
assert_eq!(tokens[3].char_range(source), 44..51);