Enum rustc_lexer::LiteralKind
source · pub enum LiteralKind {
Int {
base: Base,
empty_int: bool,
},
Float {
base: Base,
empty_exponent: bool,
},
Char {
terminated: bool,
},
Byte {
terminated: bool,
},
Str {
terminated: bool,
},
ByteStr {
terminated: bool,
},
CStr {
terminated: bool,
},
RawStr {
n_hashes: Option<u8>,
},
RawByteStr {
n_hashes: Option<u8>,
},
RawCStr {
n_hashes: Option<u8>,
},
}
Expand description
Enum representing the literal types supported by the lexer.
Note that the suffix is not considered when deciding the LiteralKind
in
this type. This means that float literals like 1f32
are classified by this
type as Int
. (Compare against rustc_ast::token::LitKind
and
rustc_ast::ast::LitKind
).
Variants§
Int
“12_u8”, “0o100”, “0b120i99”, “1f32”.
Float
“12.34f32”, “1e3”, but not “1f32”.
Char
“‘a’”, “‘\’”, “‘’‘”, “’;”
Byte
“b’a’”, “b’\‘”, “b’‘’”, “b’;”
Str
““abc”“, ““abc”
ByteStr
“b“abc”“, “b“abc”
CStr
c"abc"
, c"abc
RawStr
“r“abc”“, “r#“abc”#“, “r####“ab”###“c”####“, “r#“a”. None
indicates
an invalid literal.
RawByteStr
“br“abc”“, “br#“abc”#“, “br####“ab”###“c”####“, “br#“a”. None
indicates an invalid literal.
RawCStr
cr"abc"
, “cr#“abc”#“, cr#"a
. None
indicates an invalid literal.
Trait Implementations§
source§impl Clone for LiteralKind
impl Clone for LiteralKind
source§fn clone(&self) -> LiteralKind
fn clone(&self) -> LiteralKind
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for LiteralKind
impl Debug for LiteralKind
source§impl Ord for LiteralKind
impl Ord for LiteralKind
source§fn cmp(&self, other: &LiteralKind) -> Ordering
fn cmp(&self, other: &LiteralKind) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<LiteralKind> for LiteralKind
impl PartialEq<LiteralKind> for LiteralKind
source§fn eq(&self, other: &LiteralKind) -> bool
fn eq(&self, other: &LiteralKind) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<LiteralKind> for LiteralKind
impl PartialOrd<LiteralKind> for LiteralKind
source§fn partial_cmp(&self, other: &LiteralKind) -> Option<Ordering>
fn partial_cmp(&self, other: &LiteralKind) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl Copy for LiteralKind
impl Eq for LiteralKind
impl StructuralEq for LiteralKind
impl StructuralPartialEq for LiteralKind
Auto Trait Implementations§
impl RefUnwindSafe for LiteralKind
impl Send for LiteralKind
impl Sync for LiteralKind
impl Unpin for LiteralKind
impl UnwindSafe for LiteralKind
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
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: 3 bytes
Size for each variant:
Int
: 2 bytesFloat
: 2 bytesChar
: 1 byteByte
: 1 byteStr
: 1 byteByteStr
: 1 byteCStr
: 1 byteRawStr
: 2 bytesRawByteStr
: 2 bytesRawCStr
: 2 bytes