pub struct LitByte { /* private fields */ }
Implementations
sourceimpl LitByte
impl LitByte
sourcepub fn token(&self) -> Literal
pub fn token(&self) -> Literal
This method is non-trivial, so here is a doc-test for it.
let byte_a: LitByte = parse_quote!(b'a');
let token_a = byte_a.token();
assert_eq!(token_a.to_string(), r"b'a'");
let byte_nul: LitByte = parse_quote!(b'\x00');
let token_nul = byte_nul.token();
assert_eq!(token_nul.to_string(), r"b'\x00'");
let byte_tilde: LitByte = parse_quote!(b'~');
let token_tilde = byte_tilde.token();
assert_eq!(token_tilde.to_string(), r"b'~'");
let byte_space: LitByte = parse_quote!(b' ');
let token_space = byte_space.token();
assert_eq!(token_space.to_string(), r"b' '");
let byte_del: LitByte = parse_quote!(b'\x7f');
let token_del = byte_del.token();
assert_eq!(token_del.to_string(), r"b'\x7f'");
let byte_nonascii_80: LitByte = parse_quote!(b'\x80');
let token_nonascii_80 = byte_nonascii_80.token();
assert_eq!(token_nonascii_80.to_string(), r"b'\x80'");
let byte_nonascii_ff: LitByte = parse_quote!(b'\xff');
let token_nonascii_ff = byte_nonascii_ff.token();
assert_eq!(token_nonascii_ff.to_string(), r"b'\xff'");
Trait Implementations
sourceimpl Ord for LitByte
impl Ord for LitByte
1.21.0 · sourcefn max(self, other: Self) -> Self
fn max(self, other: Self) -> Self
Compares and returns the maximum of two values. Read more
1.21.0 · sourcefn min(self, other: Self) -> Self
fn min(self, other: Self) -> Self
Compares and returns the minimum of two values. Read more
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Selfwhere
Self: PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: PartialOrd<Self>,
Restrict a value to a certain interval. Read more
sourceimpl PartialOrd<LitByte> for LitByte
impl PartialOrd<LitByte> for LitByte
sourcefn partial_cmp(&self, other: &Self) -> Option<Ordering>
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresourceimpl PartialOrd<u8> for LitByte
impl PartialOrd<u8> for LitByte
sourcefn partial_cmp(&self, other: &u8) -> Option<Ordering>
fn partial_cmp(&self, other: &u8) -> Option<Ordering>
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresourceimpl ToTokens for LitByte
impl ToTokens for LitByte
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) -> TokenStream
fn into_token_stream(self) -> TokenStream
impl Copy for LitByte
impl Eq for LitByte
Auto Trait Implementations
impl RefUnwindSafe for LitByte
impl !Send for LitByte
impl !Sync for LitByte
impl Unpin for LitByte
impl UnwindSafe for LitByte
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);