Struct simple_bytes::Offset
source · pub struct Offset<T> { /* private fields */ }
Expand description
A struct which holds a specific offset for any BytesRead, BytesWrite or BytesSeek implementation.
Example
let mut offset = Offset::new(BytesOwned::from(vec![1, 2, 3, 4]), 2);
assert_eq!(offset.as_slice(), &[3, 4]);
assert_eq!(offset.remaining(), &[3, 4]);
offset.write_u8(5);
assert_eq!(offset.as_slice(), &[5, 4]);
assert_eq!(offset.remaining(), &[4]);
offset.seek(2);
offset.write_u8(5);
assert_eq!(offset.as_slice(), &[5, 4, 5]);
Implementations§
source§impl<T> Offset<T>
impl<T> Offset<T>
sourcepub fn new(inner: T, offset: usize) -> Selfwhere
T: BytesRead + BytesSeek,
pub fn new(inner: T, offset: usize) -> Selfwhere T: BytesRead + BytesSeek,
Creates a new Cursor.
May panic if the offset is bigger than the inner len. Depending on inner.
sourcepub fn set_offset(&mut self, offset: usize)where
T: BytesSeek,
pub fn set_offset(&mut self, offset: usize)where T: BytesSeek,
Updates the offset.
Maybe panic if there aren’t enough bytes left.
sourcepub fn inner_mut(&mut self) -> &mut T
pub fn inner_mut(&mut self) -> &mut T
Returns the inner value as a mutable reference. Shrinking the inner len or updating the position may lead to panics when reading or writing.
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Returns the inner value, discarding the offset.
Trait Implementations§
source§impl<T> BytesRead for Offset<T>where
T: BytesRead,
impl<T> BytesRead for Offset<T>where T: BytesRead,
source§fn try_read(&mut self, len: usize) -> Result<&[u8], ReadError>
fn try_read(&mut self, len: usize) -> Result<&[u8], ReadError>
Try to read a given length of bytes. Read more
source§fn peek(&self, len: usize) -> Option<&[u8]>
fn peek(&self, len: usize) -> Option<&[u8]>
Tries to read a given length without updating
the internal position. Returns
None
if there are not enought
bytes remaining.source§fn try_read_u8(&mut self) -> Result<u8, ReadError>
fn try_read_u8(&mut self) -> Result<u8, ReadError>
Try to read
1
bytes in big-endian converting them into an
u8
.source§fn try_read_u16(&mut self) -> Result<u16, ReadError>
fn try_read_u16(&mut self) -> Result<u16, ReadError>
Try to read
2
bytes in big-endian converting them into an
u16
.source§fn read_u16(&mut self) -> u16
fn read_u16(&mut self) -> u16
Reads
2
bytes in big-endian converting them into an
u16
. Read moresource§fn try_read_u32(&mut self) -> Result<u32, ReadError>
fn try_read_u32(&mut self) -> Result<u32, ReadError>
Try to read
4
bytes in big-endian converting them into an
u32
.source§fn read_u32(&mut self) -> u32
fn read_u32(&mut self) -> u32
Reads
4
bytes in big-endian converting them into an
u32
. Read moresource§fn try_read_u64(&mut self) -> Result<u64, ReadError>
fn try_read_u64(&mut self) -> Result<u64, ReadError>
Try to read
8
bytes in big-endian converting them into an
u64
.source§fn read_u64(&mut self) -> u64
fn read_u64(&mut self) -> u64
Reads
8
bytes in big-endian converting them into an
u64
. Read moresource§fn try_read_u128(&mut self) -> Result<u128, ReadError>
fn try_read_u128(&mut self) -> Result<u128, ReadError>
Try to read
16
bytes in big-endian converting them into an
u128
.source§fn read_u128(&mut self) -> u128
fn read_u128(&mut self) -> u128
Reads
16
bytes in big-endian converting them into an
u128
. Read moresource§fn try_read_i8(&mut self) -> Result<i8, ReadError>
fn try_read_i8(&mut self) -> Result<i8, ReadError>
Try to read
1
bytes in big-endian converting them into an
i8
.source§fn try_read_i16(&mut self) -> Result<i16, ReadError>
fn try_read_i16(&mut self) -> Result<i16, ReadError>
Try to read
2
bytes in big-endian converting them into an
i16
.source§fn read_i16(&mut self) -> i16
fn read_i16(&mut self) -> i16
Reads
2
bytes in big-endian converting them into an
i16
. Read moresource§fn try_read_i32(&mut self) -> Result<i32, ReadError>
fn try_read_i32(&mut self) -> Result<i32, ReadError>
Try to read
4
bytes in big-endian converting them into an
i32
.source§fn read_i32(&mut self) -> i32
fn read_i32(&mut self) -> i32
Reads
4
bytes in big-endian converting them into an
i32
. Read moresource§fn try_read_i64(&mut self) -> Result<i64, ReadError>
fn try_read_i64(&mut self) -> Result<i64, ReadError>
Try to read
8
bytes in big-endian converting them into an
i64
.source§fn read_i64(&mut self) -> i64
fn read_i64(&mut self) -> i64
Reads
8
bytes in big-endian converting them into an
i64
. Read moresource§fn try_read_i128(&mut self) -> Result<i128, ReadError>
fn try_read_i128(&mut self) -> Result<i128, ReadError>
Try to read
16
bytes in big-endian converting them into an
i128
.source§fn read_i128(&mut self) -> i128
fn read_i128(&mut self) -> i128
Reads
16
bytes in big-endian converting them into an
i128
. Read moresource§fn try_read_f32(&mut self) -> Result<f32, ReadError>
fn try_read_f32(&mut self) -> Result<f32, ReadError>
Try to read
4
bytes in big-endian converting them into an
f32
.source§fn read_f32(&mut self) -> f32
fn read_f32(&mut self) -> f32
Reads
4
bytes in big-endian converting them into an
f32
. Read moresource§fn try_read_f64(&mut self) -> Result<f64, ReadError>
fn try_read_f64(&mut self) -> Result<f64, ReadError>
Try to read
8
bytes in big-endian converting them into an
f64
.source§fn read_f64(&mut self) -> f64
fn read_f64(&mut self) -> f64
Reads
8
bytes in big-endian converting them into an
f64
. Read moresource§fn try_read_le_u8(&mut self) -> Result<u8, ReadError>
fn try_read_le_u8(&mut self) -> Result<u8, ReadError>
Try to read
1
bytes in little-endian converting them into an
u8
.source§fn read_le_u8(&mut self) -> u8
fn read_le_u8(&mut self) -> u8
Reads
1
bytes in little-endian converting them into an
u8
. Read moresource§fn try_read_le_u16(&mut self) -> Result<u16, ReadError>
fn try_read_le_u16(&mut self) -> Result<u16, ReadError>
Try to read
2
bytes in little-endian converting them into an
u16
.source§fn read_le_u16(&mut self) -> u16
fn read_le_u16(&mut self) -> u16
Reads
2
bytes in little-endian converting them into an
u16
. Read moresource§fn try_read_le_u32(&mut self) -> Result<u32, ReadError>
fn try_read_le_u32(&mut self) -> Result<u32, ReadError>
Try to read
4
bytes in little-endian converting them into an
u32
.source§fn read_le_u32(&mut self) -> u32
fn read_le_u32(&mut self) -> u32
Reads
4
bytes in little-endian converting them into an
u32
. Read moresource§fn try_read_le_u64(&mut self) -> Result<u64, ReadError>
fn try_read_le_u64(&mut self) -> Result<u64, ReadError>
Try to read
8
bytes in little-endian converting them into an
u64
.source§fn read_le_u64(&mut self) -> u64
fn read_le_u64(&mut self) -> u64
Reads
8
bytes in little-endian converting them into an
u64
. Read moresource§fn try_read_le_u128(&mut self) -> Result<u128, ReadError>
fn try_read_le_u128(&mut self) -> Result<u128, ReadError>
Try to read
16
bytes in little-endian converting them into an
u128
.source§fn read_le_u128(&mut self) -> u128
fn read_le_u128(&mut self) -> u128
Reads
16
bytes in little-endian converting them into an
u128
. Read moresource§fn try_read_le_i8(&mut self) -> Result<i8, ReadError>
fn try_read_le_i8(&mut self) -> Result<i8, ReadError>
Try to read
1
bytes in little-endian converting them into an
i8
.source§fn read_le_i8(&mut self) -> i8
fn read_le_i8(&mut self) -> i8
Reads
1
bytes in little-endian converting them into an
i8
. Read moresource§fn try_read_le_i16(&mut self) -> Result<i16, ReadError>
fn try_read_le_i16(&mut self) -> Result<i16, ReadError>
Try to read
2
bytes in little-endian converting them into an
i16
.source§fn read_le_i16(&mut self) -> i16
fn read_le_i16(&mut self) -> i16
Reads
2
bytes in little-endian converting them into an
i16
. Read moresource§fn try_read_le_i32(&mut self) -> Result<i32, ReadError>
fn try_read_le_i32(&mut self) -> Result<i32, ReadError>
Try to read
4
bytes in little-endian converting them into an
i32
.source§fn read_le_i32(&mut self) -> i32
fn read_le_i32(&mut self) -> i32
Reads
4
bytes in little-endian converting them into an
i32
. Read moresource§fn try_read_le_i64(&mut self) -> Result<i64, ReadError>
fn try_read_le_i64(&mut self) -> Result<i64, ReadError>
Try to read
8
bytes in little-endian converting them into an
i64
.source§fn read_le_i64(&mut self) -> i64
fn read_le_i64(&mut self) -> i64
Reads
8
bytes in little-endian converting them into an
i64
. Read moresource§fn try_read_le_i128(&mut self) -> Result<i128, ReadError>
fn try_read_le_i128(&mut self) -> Result<i128, ReadError>
Try to read
16
bytes in little-endian converting them into an
i128
.source§fn read_le_i128(&mut self) -> i128
fn read_le_i128(&mut self) -> i128
Reads
16
bytes in little-endian converting them into an
i128
. Read moresource§fn try_read_le_f32(&mut self) -> Result<f32, ReadError>
fn try_read_le_f32(&mut self) -> Result<f32, ReadError>
Try to read
4
bytes in little-endian converting them into an
f32
.source§fn read_le_f32(&mut self) -> f32
fn read_le_f32(&mut self) -> f32
Reads
4
bytes in little-endian converting them into an
f32
. Read moresource§fn try_read_le_f64(&mut self) -> Result<f64, ReadError>
fn try_read_le_f64(&mut self) -> Result<f64, ReadError>
Try to read
8
bytes in little-endian converting them into an
f64
.source§fn read_le_f64(&mut self) -> f64
fn read_le_f64(&mut self) -> f64
Reads
8
bytes in little-endian converting them into an
f64
. Read moresource§impl<T> BytesSeek for Offset<T>where
T: BytesSeek,
impl<T> BytesSeek for Offset<T>where T: BytesSeek,
source§impl<T> BytesWrite for Offset<T>where
T: BytesWrite,
impl<T> BytesWrite for Offset<T>where T: BytesWrite,
source§fn as_bytes(&self) -> Bytes<'_> ⓘ
fn as_bytes(&self) -> Bytes<'_> ⓘ
Returns the entire slice as a bytes struct
setting the position of the new Bytes to
0
.source§fn remaining_mut(&mut self) -> &mut [u8] ⓘ
fn remaining_mut(&mut self) -> &mut [u8] ⓘ
Returns the remaining bytes mutably.
source§fn try_write_u8(&mut self, num: u8) -> Result<(), WriteError>
fn try_write_u8(&mut self, num: u8) -> Result<(), WriteError>
Try to write
u8
in big-endian.`
source§fn try_write_u16(&mut self, num: u16) -> Result<(), WriteError>
fn try_write_u16(&mut self, num: u16) -> Result<(), WriteError>
Try to write
u16
in big-endian.`
source§fn try_write_u32(&mut self, num: u32) -> Result<(), WriteError>
fn try_write_u32(&mut self, num: u32) -> Result<(), WriteError>
Try to write
u32
in big-endian.`
source§fn try_write_u64(&mut self, num: u64) -> Result<(), WriteError>
fn try_write_u64(&mut self, num: u64) -> Result<(), WriteError>
Try to write
u64
in big-endian.`
source§fn try_write_u128(&mut self, num: u128) -> Result<(), WriteError>
fn try_write_u128(&mut self, num: u128) -> Result<(), WriteError>
Try to write
u128
in big-endian.`
source§fn write_u128(&mut self, num: u128)
fn write_u128(&mut self, num: u128)
Writes an
u128
in big-endian. Read moresource§fn try_write_i8(&mut self, num: i8) -> Result<(), WriteError>
fn try_write_i8(&mut self, num: i8) -> Result<(), WriteError>
Try to write
i8
in big-endian.`
source§fn try_write_i16(&mut self, num: i16) -> Result<(), WriteError>
fn try_write_i16(&mut self, num: i16) -> Result<(), WriteError>
Try to write
i16
in big-endian.`
source§fn try_write_i32(&mut self, num: i32) -> Result<(), WriteError>
fn try_write_i32(&mut self, num: i32) -> Result<(), WriteError>
Try to write
i32
in big-endian.`
source§fn try_write_i64(&mut self, num: i64) -> Result<(), WriteError>
fn try_write_i64(&mut self, num: i64) -> Result<(), WriteError>
Try to write
i64
in big-endian.`
source§fn try_write_i128(&mut self, num: i128) -> Result<(), WriteError>
fn try_write_i128(&mut self, num: i128) -> Result<(), WriteError>
Try to write
i128
in big-endian.`
source§fn write_i128(&mut self, num: i128)
fn write_i128(&mut self, num: i128)
Writes an
i128
in big-endian. Read moresource§fn try_write_f32(&mut self, num: f32) -> Result<(), WriteError>
fn try_write_f32(&mut self, num: f32) -> Result<(), WriteError>
Try to write
f32
in big-endian.`
source§fn try_write_f64(&mut self, num: f64) -> Result<(), WriteError>
fn try_write_f64(&mut self, num: f64) -> Result<(), WriteError>
Try to write
f64
in big-endian.`
source§fn try_write_le_u8(&mut self, num: u8) -> Result<(), WriteError>
fn try_write_le_u8(&mut self, num: u8) -> Result<(), WriteError>
Try to write
u8
in little-endian.`
source§fn write_le_u8(&mut self, num: u8)
fn write_le_u8(&mut self, num: u8)
Writes an
u8
in little-endian. Read moresource§fn try_write_le_u16(&mut self, num: u16) -> Result<(), WriteError>
fn try_write_le_u16(&mut self, num: u16) -> Result<(), WriteError>
Try to write
u16
in little-endian.`
source§fn write_le_u16(&mut self, num: u16)
fn write_le_u16(&mut self, num: u16)
Writes an
u16
in little-endian. Read moresource§fn try_write_le_u32(&mut self, num: u32) -> Result<(), WriteError>
fn try_write_le_u32(&mut self, num: u32) -> Result<(), WriteError>
Try to write
u32
in little-endian.`
source§fn write_le_u32(&mut self, num: u32)
fn write_le_u32(&mut self, num: u32)
Writes an
u32
in little-endian. Read moresource§fn try_write_le_u64(&mut self, num: u64) -> Result<(), WriteError>
fn try_write_le_u64(&mut self, num: u64) -> Result<(), WriteError>
Try to write
u64
in little-endian.`
source§fn write_le_u64(&mut self, num: u64)
fn write_le_u64(&mut self, num: u64)
Writes an
u64
in little-endian. Read moresource§fn try_write_le_u128(&mut self, num: u128) -> Result<(), WriteError>
fn try_write_le_u128(&mut self, num: u128) -> Result<(), WriteError>
Try to write
u128
in little-endian.`
source§fn write_le_u128(&mut self, num: u128)
fn write_le_u128(&mut self, num: u128)
Writes an
u128
in little-endian. Read moresource§fn try_write_le_i8(&mut self, num: i8) -> Result<(), WriteError>
fn try_write_le_i8(&mut self, num: i8) -> Result<(), WriteError>
Try to write
i8
in little-endian.`
source§fn write_le_i8(&mut self, num: i8)
fn write_le_i8(&mut self, num: i8)
Writes an
i8
in little-endian. Read moresource§fn try_write_le_i16(&mut self, num: i16) -> Result<(), WriteError>
fn try_write_le_i16(&mut self, num: i16) -> Result<(), WriteError>
Try to write
i16
in little-endian.`
source§fn write_le_i16(&mut self, num: i16)
fn write_le_i16(&mut self, num: i16)
Writes an
i16
in little-endian. Read moresource§fn try_write_le_i32(&mut self, num: i32) -> Result<(), WriteError>
fn try_write_le_i32(&mut self, num: i32) -> Result<(), WriteError>
Try to write
i32
in little-endian.`
source§fn write_le_i32(&mut self, num: i32)
fn write_le_i32(&mut self, num: i32)
Writes an
i32
in little-endian. Read moresource§fn try_write_le_i64(&mut self, num: i64) -> Result<(), WriteError>
fn try_write_le_i64(&mut self, num: i64) -> Result<(), WriteError>
Try to write
i64
in little-endian.`
source§fn write_le_i64(&mut self, num: i64)
fn write_le_i64(&mut self, num: i64)
Writes an
i64
in little-endian. Read moresource§fn try_write_le_i128(&mut self, num: i128) -> Result<(), WriteError>
fn try_write_le_i128(&mut self, num: i128) -> Result<(), WriteError>
Try to write
i128
in little-endian.`
source§fn write_le_i128(&mut self, num: i128)
fn write_le_i128(&mut self, num: i128)
Writes an
i128
in little-endian. Read moresource§fn try_write_le_f32(&mut self, num: f32) -> Result<(), WriteError>
fn try_write_le_f32(&mut self, num: f32) -> Result<(), WriteError>
Try to write
f32
in little-endian.`
source§fn write_le_f32(&mut self, num: f32)
fn write_le_f32(&mut self, num: f32)
Writes an
f32
in little-endian. Read moresource§fn try_write_le_f64(&mut self, num: f64) -> Result<(), WriteError>
fn try_write_le_f64(&mut self, num: f64) -> Result<(), WriteError>
Try to write
f64
in little-endian.`
source§fn write_le_f64(&mut self, num: f64)
fn write_le_f64(&mut self, num: f64)
Writes an
f64
in little-endian. Read moresource§impl<T: PartialEq> PartialEq<Offset<T>> for Offset<T>
impl<T: PartialEq> PartialEq<Offset<T>> for Offset<T>
impl<T: Copy> Copy for Offset<T>
impl<T: Eq> Eq for Offset<T>
impl<T> StructuralEq for Offset<T>
impl<T> StructuralPartialEq for Offset<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Offset<T>where T: RefUnwindSafe,
impl<T> Send for Offset<T>where T: Send,
impl<T> Sync for Offset<T>where T: Sync,
impl<T> Unpin for Offset<T>where T: Unpin,
impl<T> UnwindSafe for Offset<T>where T: UnwindSafe,
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
Mutably borrows from an owned value. Read more