[][src]Struct tranche::BasedTranche

pub struct BasedTranche<'a, T> { /* fields omitted */ }

A based tranche of T.

Based tranches are just like tranches, with the addition of an offset method which returns how many items were taken from the front of the original based tranche returned from BasedTranche::new.

Methods

impl<'a, T> BasedTranche<'a, T>[src]

pub fn new(slice: &'a impl AsRef<[T]>) -> Self[src]

Creates a new based tranche of T.

Examples

let parisien = BasedTranche::new(&[
    "baguette",
    "jambon",
    "beurre",
]);

pub fn len(&self) -> usize[src]

Returns the number of elements in the tranche.

Examples

let a = BasedTranche::new(&[1, 2, 3]);
assert_eq!(a.len(), 3);

pub fn is_empty(&self) -> bool[src]

Returns true if the tranche has a length of 0.

Examples

let a = BasedTranche::new(&[1, 2, 3]);
assert!(!a.is_empty());

pub fn offset(&self) -> usize[src]

Returns the starting offset of this based tranche.

pub fn take_first(&mut self) -> Result<&'a T, UnexpectedEndError>[src]

Takes the first element out of the tranche.

Returns the first element of self, or Err(_) if it is empty.

Examples

let mut v = BasedTranche::new(&[10, 40, 30]);
assert_eq!(v.take_first().unwrap(), &10);
assert_eq!(v.as_slice(), &[40, 30]);

let mut w = <BasedTranche<i32>>::new(&[]);
let err = w.take_first().unwrap_err();
assert_eq!(err.needed(), 1);
assert_eq!(err.len(), 0);

pub fn take_front(&mut self, n: usize) -> Result<Self, UnexpectedEndError>[src]

Takes the first n elements out of the tranche.

Returns a new tranche with the first n elements of self, or Err(_) if it is not long enough.

Examples

let mut v = BasedTranche::new(&[10, 40, 30]);
assert_eq!(v.take_front(2).unwrap().as_slice(), &[10, 40]);
assert_eq!(v.as_slice(), &[30]);

let err = v.take_front(3).unwrap_err();
assert_eq!(err.needed(), 3);
assert_eq!(err.len(), 1);

pub fn as_slice(&self) -> &'a [T][src]

Views the tranche's buffer as a slice.

This has the same lifetime as the original buffer, and so the tranche can continue to be used while this exists.

Examples

let mut tranche = BasedTranche::new(&[1, 2, 3]);
assert_eq!(tranche.as_slice(), &[1, 2, 3]);

assert!(tranche.take_first().is_ok());
assert_eq!(tranche.as_slice(), &[2, 3]);

pub const fn as_ptr(&self) -> *const T[src]

Returns a raw pointer to the tranche's buffer.

Examples

let tranche = BasedTranche::new(&[1, 2, 3]);
let ptr = tranche.as_ptr();

impl<'a> BasedTranche<'a, u8>[src]

pub fn take_front_as<T>(
    &mut self,
    n: usize
) -> Result<Tranche<'a, T>, UnexpectedEndError> where
    T: AlwaysAligned + AlwaysValid + Immutable, 
[src]

impl<'_> BasedTranche<'a, u8>[src]

pub fn take_u8(&mut self) -> Result<u8, UnexpectedEndError>[src]

Takes the first u8 out of the tranche.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i8(&mut self) -> Result<i8, UnexpectedEndError>[src]

Takes the first i8 out of the tranche.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u16_ne(&mut self) -> Result<u16, UnexpectedEndError>[src]

Returns a u16 by taking the first mem::size_of::<u16>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u16_le(&mut self) -> Result<u16, UnexpectedEndError>[src]

Returns a u16 by taking the first mem::size_of::<u16>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u16_be(&mut self) -> Result<u16, UnexpectedEndError>[src]

Returns a u16 by taking the first mem::size_of::<u16>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i16_ne(&mut self) -> Result<i16, UnexpectedEndError>[src]

Returns a i16 by taking the first mem::size_of::<i16>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i16_le(&mut self) -> Result<i16, UnexpectedEndError>[src]

Returns a i16 by taking the first mem::size_of::<i16>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i16_be(&mut self) -> Result<i16, UnexpectedEndError>[src]

Returns a i16 by taking the first mem::size_of::<i16>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u32_ne(&mut self) -> Result<u32, UnexpectedEndError>[src]

Returns a u32 by taking the first mem::size_of::<u32>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u32_le(&mut self) -> Result<u32, UnexpectedEndError>[src]

Returns a u32 by taking the first mem::size_of::<u32>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u32_be(&mut self) -> Result<u32, UnexpectedEndError>[src]

Returns a u32 by taking the first mem::size_of::<u32>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i32_ne(&mut self) -> Result<i32, UnexpectedEndError>[src]

Returns a i32 by taking the first mem::size_of::<i32>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i32_le(&mut self) -> Result<i32, UnexpectedEndError>[src]

Returns a i32 by taking the first mem::size_of::<i32>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i32_be(&mut self) -> Result<i32, UnexpectedEndError>[src]

Returns a i32 by taking the first mem::size_of::<i32>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u64_ne(&mut self) -> Result<u64, UnexpectedEndError>[src]

Returns a u64 by taking the first mem::size_of::<u64>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u64_le(&mut self) -> Result<u64, UnexpectedEndError>[src]

Returns a u64 by taking the first mem::size_of::<u64>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u64_be(&mut self) -> Result<u64, UnexpectedEndError>[src]

Returns a u64 by taking the first mem::size_of::<u64>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i64_ne(&mut self) -> Result<i64, UnexpectedEndError>[src]

Returns a i64 by taking the first mem::size_of::<i64>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i64_le(&mut self) -> Result<i64, UnexpectedEndError>[src]

Returns a i64 by taking the first mem::size_of::<i64>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i64_be(&mut self) -> Result<i64, UnexpectedEndError>[src]

Returns a i64 by taking the first mem::size_of::<i64>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u128_ne(&mut self) -> Result<u128, UnexpectedEndError>[src]

Returns a u128 by taking the first mem::size_of::<u128>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u128_le(&mut self) -> Result<u128, UnexpectedEndError>[src]

Returns a u128 by taking the first mem::size_of::<u128>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_u128_be(&mut self) -> Result<u128, UnexpectedEndError>[src]

Returns a u128 by taking the first mem::size_of::<u128>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i128_ne(&mut self) -> Result<i128, UnexpectedEndError>[src]

Returns a i128 by taking the first mem::size_of::<i128>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i128_le(&mut self) -> Result<i128, UnexpectedEndError>[src]

Returns a i128 by taking the first mem::size_of::<i128>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_i128_be(&mut self) -> Result<i128, UnexpectedEndError>[src]

Returns a i128 by taking the first mem::size_of::<i128>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_usize_ne(&mut self) -> Result<usize, UnexpectedEndError>[src]

Returns a usize by taking the first mem::size_of::<usize>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_usize_le(&mut self) -> Result<usize, UnexpectedEndError>[src]

Returns a usize by taking the first mem::size_of::<usize>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_usize_be(&mut self) -> Result<usize, UnexpectedEndError>[src]

Returns a usize by taking the first mem::size_of::<usize>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_isize_ne(&mut self) -> Result<isize, UnexpectedEndError>[src]

Returns a isize by taking the first mem::size_of::<isize>() bytes out of the tranche in native endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_isize_le(&mut self) -> Result<isize, UnexpectedEndError>[src]

Returns a isize by taking the first mem::size_of::<isize>() bytes out of the tranche in little endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

pub fn take_isize_be(&mut self) -> Result<isize, UnexpectedEndError>[src]

Returns a isize by taking the first mem::size_of::<isize>() bytes out of the tranche in big endian order.

The internal offset is incremented accordingly.

Returns Err(_) if self is not long enough.

Trait Implementations

impl<'_, T> Clone for BasedTranche<'_, T>[src]

impl<'_, T> Debug for BasedTranche<'_, T> where
    T: Debug
[src]

impl<'_, T> Default for BasedTranche<'_, T>[src]

impl<'_, T> ExactSizeIterator for BasedTranche<'_, T>[src]

impl<'a, T> From<BasedTranche<'a, T>> for Tranche<'a, T>[src]

impl<'a, T> From<Tranche<'a, T>> for BasedTranche<'a, T>[src]

impl<'_, T> FusedIterator for BasedTranche<'_, T>[src]

impl<'a, T> Iterator for BasedTranche<'a, T>[src]

type Item = &'a T

The type of the elements being iterated over.

impl<'_, T> Send for BasedTranche<'_, T> where
    T: Sync
[src]

impl<'_, T> Sync for BasedTranche<'_, T> where
    T: Sync
[src]

Auto Trait Implementations

impl<'a, T> RefUnwindSafe for BasedTranche<'a, T> where
    T: RefUnwindSafe

impl<'a, T> Unpin for BasedTranche<'a, T>

impl<'a, T> UnwindSafe for BasedTranche<'a, T> where
    T: RefUnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.