Trait in_situ::InSitu
[−]
[src]
pub trait InSitu: AsRef<[u8]> { fn swap_size(&self) -> usize; fn is_be(&self) -> bool; fn is_le(&self) -> bool { ... } fn is_native(&self) -> bool { ... } fn order(&self) -> Order { ... } fn at(&self, offset: usize, word_size: usize) -> usize { ... } fn u8(&self, offset: usize) -> u8 { ... } fn u16(&self, offset: usize) -> u16 { ... } fn u24(&self, offset: usize) -> u32 { ... } fn u32(&self, offset: usize) -> u32 { ... } fn u64(&self, offset: usize) -> u64 { ... } fn uint(&self, offset: usize, word_size: usize) -> u64 { ... } fn i8(&self, offset: usize) -> i8 { ... } fn i16(&self, offset: usize) -> i16 { ... } fn i24(&self, offset: usize) -> i32 { ... } fn i32(&self, offset: usize) -> i32 { ... } fn i64(&self, offset: usize) -> i64 { ... } fn int(&self, offset: usize, word_size: usize) -> i64 { ... } fn f32(&self, offset: usize) -> f32 { ... } fn f64(&self, offset: usize) -> f64 { ... } }
Provides endian-independent immutable bytes access, thus requires methods
to be implemented detecting or hardcoding the word size and endianness. This
trait requires the AsRef<[u8]>
trait to access slices of generic types. It
is not implemented for the Raw
trait but instead for its wrapper types
since each wrapper might implement the endianness detection differently.
Required Methods
fn swap_size(&self) -> usize
The word size of the slice, not to be confused with the various word sizes of how to access the slice.
fn is_be(&self) -> bool
Whether the underlying bytes are in big-endian (be) or little-endian (le) byte order.
Provided Methods
fn is_le(&self) -> bool
Inversion of is_be()
.
fn is_native(&self) -> bool
Tests if the underlying byte order has the machine's native endianness.
fn order(&self) -> Order
Convert is_be()
/is_le()
into Order
.
fn at(&self, offset: usize, word_size: usize) -> usize
If is_le()
, translates big-endian offset
of word with word_size
in
slice of swap_size()
into little-endian via bitwise instead of
branching and modulo operations, otherwise passes through offset
.
fn u8(&self, offset: usize) -> u8
Gets u8
in slice of swap_size()
at big-endian offset
endian-independently.
fn u16(&self, offset: usize) -> u16
Gets u16
in slice of swap_size()
at big-endian offset
endian-independently.
fn u24(&self, offset: usize) -> u32
Gets u24
in slice of swap_size()
at big-endian offset
endian-independently.
fn u32(&self, offset: usize) -> u32
Gets u32
in slice of swap_size()
at big-endian offset
endian-independently.
fn u64(&self, offset: usize) -> u64
Gets u64
in slice of swap_size()
at big-endian offset
endian-independently.
fn uint(&self, offset: usize, word_size: usize) -> u64
Gets unsigned integer of word_size <= 8
in slice of swap_size()
at
big-endian offset
endian-independently.
fn i8(&self, offset: usize) -> i8
Gets i8
in slice of swap_size()
at big-endian offset
endian-independently.
fn i16(&self, offset: usize) -> i16
Gets i16
in slice of swap_size()
at big-endian offset
endian-independently.
fn i24(&self, offset: usize) -> i32
Gets i24
in slice of swap_size()
at big-endian offset
endian-independently.
fn i32(&self, offset: usize) -> i32
Gets i32
in slice of swap_size()
at big-endian offset
endian-independently.
fn i64(&self, offset: usize) -> i64
Gets i64
in slice of swap_size()
at big-endian offset
endian-independently.
fn int(&self, offset: usize, word_size: usize) -> i64
Gets signed integer of word_size <= 8
in slice of swap_size()
at
big-endian offset
endian-independently.
fn f32(&self, offset: usize) -> f32
Gets f32
in slice of swap_size()
at big-endian offset
endian-independently.
fn f64(&self, offset: usize) -> f64
Gets f64
in slice of swap_size()
at big-endian offset
endian-independently.