Struct fixed_deque::Deque
source · pub struct Deque<T> { /* private fields */ }Expand description
A fixed size VecDeque to match Python Deque
https://docs.python.org/3/library/collections.html#collections.deque
Implementations§
source§impl<T> Deque<T>
impl<T> Deque<T>
sourcepub fn new(maxlen: usize) -> Self
pub fn new(maxlen: usize) -> Self
Creates a new Deque with a given maximum length.
§Examples
use fixed_deque::Deque;
let mut deque: Deque<i32> = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
deque.push_back(3);
deque.push_back(4);
assert_eq!(deque.len(), 3);
assert_eq!(deque.get(0), Some(&2));sourcepub fn new_from(value: T, maxlen: usize) -> Self
pub fn new_from(value: T, maxlen: usize) -> Self
Creates a new Deque from a given single value and maximum length.
§Examples
use fixed_deque::Deque;
let deque: Deque<i32> = Deque::new_from(1, 3);
assert_eq!(deque.len(), 1);
assert_eq!(deque.get(0), Some(&1));sourcepub fn new_from_vec(vec: Vec<T>, maxlen: usize) -> Self
pub fn new_from_vec(vec: Vec<T>, maxlen: usize) -> Self
Creates a new Deque from an existing Vec with a given maximum length.
§Examples
use fixed_deque::Deque;
let deque: Deque<i32> = Deque::new_from_vec(vec![1, 2, 3], 3);
assert_eq!(deque.len(), 3);sourcepub const fn new_from_vec_deque(deque: VecDeque<T>, maxlen: usize) -> Self
pub const fn new_from_vec_deque(deque: VecDeque<T>, maxlen: usize) -> Self
Creates a new Deque from an existing VecDeque with a given maximum length.
§Examples
use std::collections::VecDeque;
use fixed_deque::Deque;
let vec_deque: VecDeque<i32> = VecDeque::from(vec![1, 2, 3]);
let deque: Deque<i32> = Deque::new_from_vec_deque(vec_deque, 3);
assert_eq!(deque.len(), 3);sourcepub fn push_back(&mut self, value: T) -> Option<T>
pub fn push_back(&mut self, value: T) -> Option<T>
Add an element to the back of the Deque. If the Deque exceeds its maximum length, the front element is removed.
§Examples
use fixed_deque::Deque;
let mut deque: Deque<i32> = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
deque.push_back(3);
assert_eq!(deque.len(), 3);
let overflow = deque.push_back(4);
assert_eq!(overflow, Some(1));
assert_eq!(deque.len(), 3);sourcepub fn pop_front(&mut self) -> Option<T>
pub fn pop_front(&mut self) -> Option<T>
Removes the first element and returns it,
or None if the deque is empty.
§Examples
use fixed_deque::Deque;
let mut deque = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
assert_eq!(deque.pop_front(), Some(1));
assert_eq!(deque.pop_front(), Some(2));
assert_eq!(deque.pop_front(), None);sourcepub fn pop_back(&mut self) -> Option<T>
pub fn pop_back(&mut self) -> Option<T>
Removes the last element from the deque and returns it,
or None if it is empty.
sourcepub fn back(&self) -> Option<&T>
pub fn back(&self) -> Option<&T>
Returns the last element of the Deque.
§Examples
use fixed_deque::Deque;
let mut deque: Deque<i32> = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
assert_eq!(deque.back(), Some(&2));sourcepub fn get(&self, index: usize) -> Option<&T>
pub fn get(&self, index: usize) -> Option<&T>
Returns an immutable reference to the element at the given index.
§Examples
use fixed_deque::Deque;
let mut deque: Deque<i32> = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
assert_eq!(deque.get(1), Some(&2));sourcepub fn get_mut(&mut self, index: usize) -> Option<&mut T>
pub fn get_mut(&mut self, index: usize) -> Option<&mut T>
Returns a mutable reference to the element at the given index.
§Examples
use fixed_deque::Deque;
let mut deque: Deque<i32> = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
if let Some(value) = deque.get_mut(1) {
*value = 42;
}
assert_eq!(deque.get(1), Some(&42));sourcepub fn iter_except_last(&self) -> impl Iterator<Item = &T>
pub fn iter_except_last(&self) -> impl Iterator<Item = &T>
Returns an iterator over all elements except the last one.
§Examples
use fixed_deque::Deque;
let mut deque: Deque<i32> = Deque::new(3);
deque.push_back(1);
deque.push_back(2);
deque.push_back(3);
let mut iter = deque.iter_except_last();
assert_eq!(iter.next(), Some(&1));
assert_eq!(iter.next(), Some(&2));
assert_eq!(iter.next(), None);Trait Implementations§
source§impl<T> FromIterator<T> for Deque<T>
impl<T> FromIterator<T> for Deque<T>
source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
source§impl<'a, T> IntoIterator for &'a Deque<T>
impl<'a, T> IntoIterator for &'a Deque<T>
source§impl<'a, T> IntoIterator for &'a mut Deque<T>
impl<'a, T> IntoIterator for &'a mut Deque<T>
source§impl<T> IntoIterator for Deque<T>
impl<T> IntoIterator for Deque<T>
impl<T: Eq> Eq for Deque<T>
Auto Trait Implementations§
impl<T> Freeze for Deque<T>
impl<T> RefUnwindSafe for Deque<T>where
T: RefUnwindSafe,
impl<T> Send for Deque<T>where
T: Send,
impl<T> Sync for Deque<T>where
T: Sync,
impl<T> Unpin for Deque<T>where
T: Unpin,
impl<T> UnwindSafe for Deque<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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)