pub struct Bracket<T> { /* private fields */ }
Expand description
Parses a subexpression inside square brackets.
let array: Bracket<LitBool> = parse_quote!([true]);
assert_eq!(array.into_inner(), LitBool::from(true));
ⓘ
let array: Bracket<LitBool> = parse_quote!(true);
let expr: Bracket<Ident> = ident("hey_ho").into();
assert_eq!(
expr.to_token_stream().to_string(),
quote::quote!([hey_ho]).to_string(),
);
Implementations
sourceimpl<T> Bracket<T>
impl<T> Bracket<T>
pub const fn new(inner: T, span: Span) -> Self
pub fn into_inner(self) -> T
pub fn as_brackets(&self) -> &Bracket
pub fn into_brackets(self) -> Bracket
pub fn as_parts(&self) -> (&Bracket, &T)
pub fn into_parts(self) -> (Bracket, T)
Trait Implementations
sourceimpl<T: PartialEq> PartialEq<Bracket<T>> for Bracket<T>
impl<T: PartialEq> PartialEq<Bracket<T>> for Bracket<T>
sourceimpl<T: ToTokens> ToTokens for Bracket<T>
impl<T: ToTokens> ToTokens for Bracket<T>
sourcefn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
sourcefn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
sourcefn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
impl<T: Copy> Copy for Bracket<T>
impl<T: Eq> Eq for Bracket<T>
impl<T> StructuralEq for Bracket<T>
impl<T> StructuralPartialEq for Bracket<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for Bracket<T>where
T: RefUnwindSafe,
impl<T> !Send for Bracket<T>
impl<T> !Sync for Bracket<T>
impl<T> Unpin for Bracket<T>where
T: Unpin,
impl<T> UnwindSafe for Bracket<T>where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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 Twhere
T: Spanned + ?Sized,
impl<T> Spanned for Twhere
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 moresourceimpl<T> SpannedExt for Twhere
T: Spanned + ?Sized,
impl<T> SpannedExt for Twhere
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);