pub struct OffsetVec<V: VecLike> { /* private fields */ }Expand description
For all methods index add a offset
Create from Offset::offset or create
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4]);
assert_eq!(vec1[1], 3);
vec1[1] += 2;
assert_eq!(vec, [0, 1, 2, 5, 4]);Implementations§
Source§impl<V: VecLike> OffsetVec<V>
impl<V: VecLike> OffsetVec<V>
Sourcepub fn origin_vec(&self) -> &V
pub fn origin_vec(&self) -> &V
Get original vector
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4]);
assert_eq!(vec1.origin_vec(), &&mut vec![0, 1, 2, 3, 4]);Sourcepub fn origin_vec_mut(&mut self) -> &mut V
pub fn origin_vec_mut(&mut self) -> &mut V
Get mutable original vector
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4]);
assert_eq!(vec1.origin_vec_mut(), &mut &mut vec![0, 1, 2, 3, 4]);
vec1.origin_vec_mut()[3] += 2;
assert_eq!(vec1, [2, 5, 4]);Sourcepub fn into_origin_vec(self) -> V
pub fn into_origin_vec(self) -> V
Sourcepub fn as_slice(&self) -> &V::Slice
pub fn as_slice(&self) -> &V::Slice
Extracts a slice containing the offset vector.
Equivalent to &s[..].
§Examples
use offset_vec::Offset;
let vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset(2);
assert_eq!(vec1.as_slice(), &[2, 3, 4]);
assert_eq!(&vec1[..], &[2, 3, 4]);Sourcepub fn as_mut_slice(&mut self) -> &mut V::Slice
pub fn as_mut_slice(&mut self) -> &mut V::Slice
Extracts a mutable slice containing the offset vector.
Equivalent to &mut s[..].
§Examples
use offset_vec::Offset;
let vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset(2);
assert_eq!(vec1.as_mut_slice(), &mut [2, 3, 4]);
assert_eq!(&mut vec1[..], &mut [2, 3, 4]);Sourcepub fn iter<'a>(&'a self) -> <&'a V::Slice as IntoIterator>::IntoIterwhere
&'a V::Slice: IntoIterator,
pub fn iter<'a>(&'a self) -> <&'a V::Slice as IntoIterator>::IntoIterwhere
&'a V::Slice: IntoIterator,
Immutable iterator
§Examples
use offset_vec::Offset;
let vec = vec![0, 1, 2, 3, 4];
let vec1 = vec.offset(2);
let x: Vec<_> = vec1.iter().collect();
assert_eq!(x, [&2, &3, &4]);Sourcepub fn iter_mut<'a>(
&'a mut self,
) -> <&'a mut V::Slice as IntoIterator>::IntoIterwhere
&'a mut V::Slice: IntoIterator,
pub fn iter_mut<'a>(
&'a mut self,
) -> <&'a mut V::Slice as IntoIterator>::IntoIterwhere
&'a mut V::Slice: IntoIterator,
Mutable iterator
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset_mut(2);
let mut x: Vec<_> = vec1.iter_mut().collect();
assert_eq!(x, [&mut 2, &mut 3, &mut 4]);
*x[1] += 2;
assert_eq!(vec1, [2, 5, 4]);
assert_eq!(vec, [0, 1, 2, 5, 4]);Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Get offset vector length
§Examples
use offset_vec::Offset;
let vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset(2);
assert_eq!(vec1.len(), 3);
assert_eq!(vec1.origin_vec().len(), 5);Sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Get offset vector capacity
§Examples
use offset_vec::Offset;
let mut vec = Vec::with_capacity(5);
vec.extend([0, 1, 2, 3, 4]);
let mut vec1 = vec.offset(2);
assert_eq!(3, vec1.capacity());
assert_eq!(5, vec1.origin_vec().capacity());pub fn reserve(&mut self, additional: usize)
pub fn reserve_exact(&mut self, additional: usize)
pub fn shrink_to_fit(&mut self)
pub fn shrink_to(&mut self, min_capacity: usize)
Sourcepub fn origin_offset(&self) -> usize
pub fn origin_offset(&self) -> usize
Get offset
§Examples
use offset_vec::Offset;
let vec = vec![0, 1, 2, 3, 4];
let vec1 = vec.offset(2);
assert_eq!(vec1.origin_offset(), 2);
let vec2 = vec1.offset(1);
assert_eq!(vec2.origin_offset(), 3);Sourcepub fn push(&mut self, value: V::Elem)
pub fn push(&mut self, value: V::Elem)
Push a value
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4]);
vec1.push(5);
assert_eq!(vec1, [2, 3, 4, 5]);
assert_eq!(vec, [0, 1, 2, 3, 4, 5]);Sourcepub fn pop(&mut self) -> Option<V::Elem>
pub fn pop(&mut self) -> Option<V::Elem>
Pop a value
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3]);
assert_eq!(vec1.pop(), Some(3));
assert_eq!(vec1, [2]);
assert_eq!(vec1.pop(), Some(2));
assert_eq!(vec1, []);
assert_eq!(vec1.pop(), None);
assert_eq!(vec1, []);
assert_eq!(vec1.origin_vec(), &&mut [0, 1]);
assert_eq!(vec, [0, 1]);Sourcepub fn remove(&mut self, index: usize) -> V::Elem
pub fn remove(&mut self, index: usize) -> V::Elem
Remove a value at index, shifting all elements after it to the left.
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4, 5];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4, 5]);
assert_eq!(vec1.remove(1), 3);
assert_eq!(vec1, [2, 4, 5]);
assert_eq!(vec, [0, 1, 2, 4, 5]);Sourcepub fn insert(&mut self, index: usize, elem: V::Elem)
pub fn insert(&mut self, index: usize, elem: V::Elem)
Insert a value before index, shifting all elements after it to the right.
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 4, 5];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 4, 5]);
vec1.insert(1, 3);
assert_eq!(vec1, [2, 3, 4, 5]);
vec1.insert(4, 6);
assert_eq!(vec1, [2, 3, 4, 5, 6]);
assert_eq!(vec, [0, 1, 2, 3, 4, 5, 6]);Sourcepub fn truncate(&mut self, len: usize)
pub fn truncate(&mut self, len: usize)
Truncate to length
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4, 5];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4, 5]);
vec1.truncate(2);
assert_eq!(vec1, [2, 3]);
assert_eq!(vec, [0, 1, 2, 3]);Sourcepub fn append(&mut self, other: &mut V::Collection)
pub fn append(&mut self, other: &mut V::Collection)
Append and clear other collection
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3];
let mut vec1 = vec.offset_mut(2);
let mut other = vec![4, 5];
assert_eq!(vec1, [2, 3]);
vec1.append(&mut other);
assert_eq!(other, []);
assert_eq!(vec1, [2, 3, 4, 5]);
assert_eq!(vec, [0, 1, 2, 3, 4, 5]);Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clear all elements (offset)
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4]);
vec1.clear();
assert_eq!(vec1, []);
assert_eq!(vec, [0, 1]);Sourcepub fn drain<R: RangeBounds<usize>>(&mut self, range: R) -> V::Drain<'_>
pub fn drain<R: RangeBounds<usize>>(&mut self, range: R) -> V::Drain<'_>
Drain range elements
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4, 5, 6];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4, 5, 6]);
let drain = vec1.drain(2..4).collect::<Vec<_>>();
assert_eq!(drain, [4, 5]);
assert_eq!(vec1, [2, 3, 6]);
assert_eq!(vec, [0, 1, 2, 3, 6]);Sourcepub fn split_off(&mut self, at: usize) -> V::Collection
pub fn split_off(&mut self, at: usize) -> V::Collection
Splits the collection into two at the given index.
§Examples
use offset_vec::Offset;
let mut vec = vec![0, 1, 2, 3, 4, 5, 6];
let mut vec1 = vec.offset_mut(2);
assert_eq!(vec1, [2, 3, 4, 5, 6]);
let other = vec1.split_off(3);
assert_eq!(other, [5, 6]);
assert_eq!(vec1, [2, 3, 4]);
assert_eq!(vec, [0, 1, 2, 3, 4]);pub fn resize(&mut self, new_len: usize, value: V::Elem)
pub fn resize_with<F>(&mut self, new_len: usize, f: F)
pub fn retain<F>(&mut self, f: F)
Source§impl<V: VecLikeSolid> OffsetVec<V>
impl<V: VecLikeSolid> OffsetVec<V>
Trait Implementations§
Source§impl<T, V: VecLike<Slice = [T]>> BorrowMut<[T]> for OffsetVec<V>
impl<T, V: VecLike<Slice = [T]>> BorrowMut<[T]> for OffsetVec<V>
Source§fn borrow_mut(&mut self) -> &mut V::Slice
fn borrow_mut(&mut self) -> &mut V::Slice
Mutably borrows from an owned value. Read more
Source§impl<V: VecLike<Slice = str>> BorrowMut<str> for OffsetVec<V>
impl<V: VecLike<Slice = str>> BorrowMut<str> for OffsetVec<V>
Source§fn borrow_mut(&mut self) -> &mut V::Slice
fn borrow_mut(&mut self) -> &mut V::Slice
Mutably borrows from an owned value. Read more
Source§impl<T, V: VecLike> Extend<T> for OffsetVec<V>where
V::Collection: Extend<T>,
impl<T, V: VecLike> Extend<T> for OffsetVec<V>where
V::Collection: Extend<T>,
Source§fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
Extends a collection with the contents of an iterator. Read more
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
🔬This is a nightly-only experimental API. (
extend_one)Extends a collection with exactly one element.
Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
🔬This is a nightly-only experimental API. (
extend_one)Reserves capacity in a collection for the given number of additional elements. Read more
Source§impl<T, V> FromIterator<T> for OffsetVec<V>where
V: FromIterator<T> + VecLike,
impl<T, V> FromIterator<T> for OffsetVec<V>where
V: FromIterator<T> + VecLike,
Source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
Creates a value from an iterator. Read more
Source§impl<'a, V: VecLike + IntoIterator> IntoIterator for &'a OffsetVec<V>where
&'a V::Slice: IntoIterator,
impl<'a, V: VecLike + IntoIterator> IntoIterator for &'a OffsetVec<V>where
&'a V::Slice: IntoIterator,
Source§impl<'a, V: VecLike + IntoIterator> IntoIterator for &'a mut OffsetVec<V>where
&'a mut V::Slice: IntoIterator,
impl<'a, V: VecLike + IntoIterator> IntoIterator for &'a mut OffsetVec<V>where
&'a mut V::Slice: IntoIterator,
Source§impl<V: VecLike + IntoIterator> IntoIterator for OffsetVec<V>
impl<V: VecLike + IntoIterator> IntoIterator for OffsetVec<V>
Source§impl<V: VecLike> OffsetCheckRef for OffsetVec<V>
impl<V: VecLike> OffsetCheckRef for OffsetVec<V>
fn offset_check_ref(&self)
Source§impl<V: VecLike> Ord for OffsetVec<V>
impl<V: VecLike> Ord for OffsetVec<V>
Source§impl<T: PartialEq, V: VecLike<Elem = T, Slice = [T]>, const N: usize> PartialEq<&[T; N]> for OffsetVec<V>
impl<T: PartialEq, V: VecLike<Elem = T, Slice = [T]>, const N: usize> PartialEq<&[T; N]> for OffsetVec<V>
Source§impl<T: PartialEq, V: VecLike<Elem = T, Slice = [T]>, const N: usize> PartialEq<[T; N]> for OffsetVec<V>
impl<T: PartialEq, V: VecLike<Elem = T, Slice = [T]>, const N: usize> PartialEq<[T; N]> for OffsetVec<V>
Source§impl<V: VecLike> PartialOrd for OffsetVec<V>where
V::Slice: PartialOrd,
impl<V: VecLike> PartialOrd for OffsetVec<V>where
V::Slice: PartialOrd,
impl<V: VecLike> Eq for OffsetVec<V>
Auto Trait Implementations§
impl<V> Freeze for OffsetVec<V>where
V: Freeze,
impl<V> RefUnwindSafe for OffsetVec<V>where
V: RefUnwindSafe,
impl<V> Send for OffsetVec<V>where
V: Send,
impl<V> Sync for OffsetVec<V>where
V: Sync,
impl<V> Unpin for OffsetVec<V>where
V: Unpin,
impl<V> UnwindSafe for OffsetVec<V>where
V: 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