Trait flatk::GetOffset[][src]

pub unsafe trait GetOffset {
    unsafe fn offset_value_unchecked(&self, index: usize) -> usize;
fn num_offsets(&self) -> usize; fn chunk_len(&self, chunk_index: usize) -> usize { ... }
unsafe fn chunk_len_unchecked(&self, chunk_index: usize) -> usize { ... }
fn offset_value(&self, index: usize) -> usize { ... }
fn offset(&self, index: usize) -> usize { ... }
unsafe fn offset_unchecked(&self, index: usize) -> usize { ... }
fn last_offset(&self) -> usize { ... }
fn first_offset(&self) -> usize { ... }
fn last_offset_value(&self) -> usize { ... }
fn first_offset_value(&self) -> usize { ... } }
Expand description

Manipulate a non-empty collection of offsets.

Safety

The implementing type must ensure that there is always at least one offset in the container. That is num_offsets() never returns 0.

If that is not inherent in the collection, the implementor should make sure to override the functions in this trait that make this assumption.

Required methods

A version of offset_value without bounds checking.

Safety

The given index must be less than self.len() to avoid undefined behaviour.

Get the total number of offsets.

Provided methods

Get the length of the chunk at the given index.

Returns the distance between offsets at index and index + 1.

Panics

This funciton will panic if chunk_index+1 is greater than or equal to self.num_offsets().

Get the length of the chunk at the given index without bounds checking.

Returns the distance between offsets at index and index + 1.

Safety

May cause undefined behaviour if chunk_index+1 is greater than or equal to self.num_offsets().

Return the raw value corresponding to the offset at the given index.

Using first_* and last_* variants for getting first and last offsets are preferred since they don’t require bounds checking.

Panics

This function panics if index is greater than or equal to self.len().

Example
use flatk::*;
let s = Offsets::new(vec![2,5,6,8]);
assert_eq!(2, s.offset_value(0));
assert_eq!(5, s.offset_value(1));
assert_eq!(6, s.offset_value(2));
assert_eq!(8, s.offset_value(3));

Returns the offset at the given index with respect to (minus) the first offset. This function returns the total length of data if index is equal to self.len().

Panics

This function panics if index is greater than or equal to self.len().

Example
use flatk::*;
let s = Offsets::new(vec![2,5,6,8]);
assert_eq!(0, s.offset(0));
assert_eq!(3, s.offset(1));
assert_eq!(4, s.offset(2));
assert_eq!(6, s.offset(3));

A version of offset without bounds checking.

Safety

It is assumed that index is strictly less than self.len().

Get the last offset.

Since offsets are never empty by construction, this will always work.

Get the first offset.

This should always return 0.

Get the raw value corresponding to the last offset.

Get the raw value corresponding to the first offset.

Implementors