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
sourceimpl<T> Offset<T>
impl<T> Offset<T>
sourcepub fn new(inner: T, offset: usize) -> Self where
T: BytesRead + BytesSeek,
pub fn new(inner: T, offset: usize) -> Self where
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
sourceimpl<T> BytesRead for Offset<T> where
T: BytesRead,
impl<T> BytesRead for Offset<T> where
T: BytesRead,
sourcefn as_slice(&self) -> &[u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
fn as_slice(&self) -> &[u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
Returns the entire slice.
sourcefn remaining(&self) -> &[u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
fn remaining(&self) -> &[u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
Returns all remaining bytes.
sourcefn 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
sourcefn 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. Read more
sourcefn read(&mut self, len: usize) -> &[u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
fn read(&mut self, len: usize) -> &[u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
Reads a given length of bytes. Read more
sourcefn 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
. Read more
sourcefn 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
. Read more
sourcefn read_u16(&mut self) -> u16
fn read_u16(&mut self) -> u16
Reads
2
bytes in big-endian converting them into an u16
. Read more
sourcefn 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
. Read more
sourcefn read_u32(&mut self) -> u32
fn read_u32(&mut self) -> u32
Reads
4
bytes in big-endian converting them into an u32
. Read more
sourcefn 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
. Read more
sourcefn read_u64(&mut self) -> u64
fn read_u64(&mut self) -> u64
Reads
8
bytes in big-endian converting them into an u64
. Read more
sourcefn 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
. Read more
sourcefn read_u128(&mut self) -> u128
fn read_u128(&mut self) -> u128
Reads
16
bytes in big-endian converting them into an u128
. Read more
sourcefn 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
. Read more
sourcefn 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
. Read more
sourcefn read_i16(&mut self) -> i16
fn read_i16(&mut self) -> i16
Reads
2
bytes in big-endian converting them into an i16
. Read more
sourcefn 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
. Read more
sourcefn read_i32(&mut self) -> i32
fn read_i32(&mut self) -> i32
Reads
4
bytes in big-endian converting them into an i32
. Read more
sourcefn 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
. Read more
sourcefn read_i64(&mut self) -> i64
fn read_i64(&mut self) -> i64
Reads
8
bytes in big-endian converting them into an i64
. Read more
sourcefn 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
. Read more
sourcefn read_i128(&mut self) -> i128
fn read_i128(&mut self) -> i128
Reads
16
bytes in big-endian converting them into an i128
. Read more
sourcefn 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
. Read more
sourcefn read_f32(&mut self) -> f32
fn read_f32(&mut self) -> f32
Reads
4
bytes in big-endian converting them into an f32
. Read more
sourcefn 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
. Read more
sourcefn read_f64(&mut self) -> f64
fn read_f64(&mut self) -> f64
Reads
8
bytes in big-endian converting them into an f64
. Read more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourcefn 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
. Read more
sourcefn 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 more
sourceimpl<T> BytesSeek for Offset<T> where
T: BytesSeek,
impl<T> BytesSeek for Offset<T> where
T: BytesSeek,
sourceimpl<T> BytesWrite for Offset<T> where
T: BytesWrite,
impl<T> BytesWrite for Offset<T> where
T: BytesWrite,
sourcefn as_mut(&mut self) -> &mut [u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
fn as_mut(&mut self) -> &mut [u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
Returns the entire slice mutably.
sourcefn as_bytes(&self) -> Bytes<'_>ⓘNotable traits for Bytes<'_>impl Read for Bytes<'_>
fn as_bytes(&self) -> Bytes<'_>ⓘNotable traits for Bytes<'_>impl Read for Bytes<'_>
Returns the entire slice as a bytes struct
setting the position of the new Bytes to 0
. Read more
sourcefn remaining_mut(&mut self) -> &mut [u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
fn remaining_mut(&mut self) -> &mut [u8]ⓘNotable traits for &'_ mut [u8]impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
Returns the remaining bytes mutably.
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn write_u128(&mut self, num: u128)
fn write_u128(&mut self, num: u128)
Writes an u128
in big-endian. Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn write_i128(&mut self, num: i128)
fn write_i128(&mut self, num: i128)
Writes an i128
in big-endian. Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn 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.` Read more
sourcefn write_le_u8(&mut self, num: u8)
fn write_le_u8(&mut self, num: u8)
Writes an u8
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_u16(&mut self, num: u16)
fn write_le_u16(&mut self, num: u16)
Writes an u16
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_u32(&mut self, num: u32)
fn write_le_u32(&mut self, num: u32)
Writes an u32
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_u64(&mut self, num: u64)
fn write_le_u64(&mut self, num: u64)
Writes an u64
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_u128(&mut self, num: u128)
fn write_le_u128(&mut self, num: u128)
Writes an u128
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_i8(&mut self, num: i8)
fn write_le_i8(&mut self, num: i8)
Writes an i8
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_i16(&mut self, num: i16)
fn write_le_i16(&mut self, num: i16)
Writes an i16
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_i32(&mut self, num: i32)
fn write_le_i32(&mut self, num: i32)
Writes an i32
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_i64(&mut self, num: i64)
fn write_le_i64(&mut self, num: i64)
Writes an i64
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_i128(&mut self, num: i128)
fn write_le_i128(&mut self, num: i128)
Writes an i128
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_f32(&mut self, num: f32)
fn write_le_f32(&mut self, num: f32)
Writes an f32
in little-endian. Read more
sourcefn 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.` Read more
sourcefn write_le_f64(&mut self, num: f64)
fn write_le_f64(&mut self, num: f64)
Writes an f64
in little-endian. Read more
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
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