pub struct RawParser<'data> { /* private fields */ }
Expand description
Raw parser.
- provides basic and intermediate parsing functions used by
Parser
andPacketParser
; - works at byte-level.
Implementations
sourceimpl<'data> RawParser<'data>
impl<'data> RawParser<'data>
Basic functions.
sourcepub fn new(data: &'data [u8], offset: usize) -> Self
pub fn new(data: &'data [u8], offset: usize) -> Self
Constructor.
data
: input bytes to parse;offset
offset from the start of the original input. Used byPacketParser
, which works on a slice of the original input, for consistent error-reporting.
sourceimpl<'data> RawParser<'data>
impl<'data> RawParser<'data>
RawParser helpers.
sourcepub fn real_position(&self) -> (usize, usize)
pub fn real_position(&self) -> (usize, usize)
Yields the current position and the total length of the input text.
sourceimpl<'data> RawParser<'data>
impl<'data> RawParser<'data>
Basic parsers.
sourcepub fn u8_le(&mut self) -> Res<u8>
pub fn u8_le(&mut self) -> Res<u8>
Parses a u8
.
Examples
let data = 213u8.to_le_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u8_le().unwrap(), 213);
assert!(parser.is_eof());
sourcepub fn u8_be(&mut self) -> Res<u8>
pub fn u8_be(&mut self) -> Res<u8>
Parses a u8
.
Examples
let data = 213u8.to_be_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u8_be().unwrap(), 213);
assert!(parser.is_eof());
sourcepub fn u16_le(&mut self) -> Res<u16>
pub fn u16_le(&mut self) -> Res<u16>
Parses a u16
.
Examples
let data = 1_213u16.to_le_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u16_le().unwrap(), 1_213);
assert!(parser.is_eof());
sourcepub fn u16_be(&mut self) -> Res<u16>
pub fn u16_be(&mut self) -> Res<u16>
Parses a u16
.
Examples
let data = 1_213u16.to_be_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u16_be().unwrap(), 1_213);
assert!(parser.is_eof());
sourcepub fn u32_le(&mut self) -> Res<u32>
pub fn u32_le(&mut self) -> Res<u32>
Parses a u32
.
Examples
let data = 1_701_213u32.to_le_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u32_le().unwrap(), 1_701_213);
assert!(parser.is_eof());
sourcepub fn u32_be(&mut self) -> Res<u32>
pub fn u32_be(&mut self) -> Res<u32>
Parses a u32
.
Examples
let data = 1_701_213u32.to_be_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u32_be().unwrap(), 1_701_213);
assert!(parser.is_eof());
sourcepub fn u64_be(&mut self) -> Res<u64>
pub fn u64_be(&mut self) -> Res<u64>
Parses a u64
.
Examples
let data = 7_501_701_213u64.to_be_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u64_be().unwrap(), 7_501_701_213);
assert!(parser.is_eof());
sourcepub fn u64_le(&mut self) -> Res<u64>
pub fn u64_le(&mut self) -> Res<u64>
Parses a u64
, low-endian version.
Examples
let data = 7_501_701_213u64.to_le_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.u64_le().unwrap(), 7_501_701_213);
assert!(parser.is_eof());
sourcepub fn f64_be(&mut self) -> Res<f64>
pub fn f64_be(&mut self) -> Res<f64>
Parses a u64
, big-endian version.
Examples
let data = 7_501_701.745f64.to_be_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.f64_be().unwrap(), 7_501_701.745);
assert!(parser.is_eof());
sourcepub fn f64_le(&mut self) -> Res<f64>
pub fn f64_le(&mut self) -> Res<f64>
Parses a u64
, big-endian version.
Examples
let data = 7_501_701.745f64.to_le_bytes();
let mut parser = RawParser::new(&data, 0);
assert_eq!(parser.f64_le().unwrap(), 7_501_701.745);
assert!(parser.is_eof());
Trait Implementations
Auto Trait Implementations
impl<'data> RefUnwindSafe for RawParser<'data>
impl<'data> Send for RawParser<'data>
impl<'data> Sync for RawParser<'data>
impl<'data> Unpin for RawParser<'data>
impl<'data> UnwindSafe for RawParser<'data>
Blanket Implementations
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src where
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src where
Scheme: ApproxScheme,
type Err = NoError
type Err = NoError
The error type produced by a failed conversion.
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
Convert the given value into an approximately equivalent representation.
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Src where
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Src where
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
The error type produced by a failed conversion.
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Convert the subject into an approximately equivalent representation.
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
impl<T> ConvUtil for T
impl<T> ConvUtil for T
fn approx_as<Dst>(self) -> Result<Dst, Self::Err> where
Self: ApproxInto<Dst, DefaultApprox>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err> where
Self: ApproxInto<Dst, DefaultApprox>,
Approximate the subject to a given type with the default scheme.
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err> where
Self: ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err> where
Self: ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
Approximate the subject to a given type with a specific scheme.
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
impl<Src> ValueFrom<Src> for Src
impl<Src> ValueFrom<Src> for Src
type Err = NoError
type Err = NoError
The error type produced by a failed conversion.
fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>
fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>
Convert the given value into an exactly equivalent representation.
impl<Src, Dst> ValueInto<Dst> for Src where
Dst: ValueFrom<Src>,
impl<Src, Dst> ValueInto<Dst> for Src where
Dst: ValueFrom<Src>,
type Err = <Dst as ValueFrom<Src>>::Err
type Err = <Dst as ValueFrom<Src>>::Err
The error type produced by a failed conversion.
fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>
fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>
Convert the subject into an exactly equivalent representation.