pub struct LinkedList<V, T> { /* private fields */ }
Expand description

A double-linked linked list implementation using a generational Arena for allocation.

Implementations§

source§

impl<V, T> LinkedList<V, T>where V: Vector<Entry<Node<T>>>,

source

pub fn with_backing_vector(vector: V) -> Self

Creates a new LinkedList with given the backing Vector for the underlying Arena.

source

pub fn clear(&mut self) -> Result<(), ListError<V::Error>>

Removes all elements from this LinkedList.

source

pub fn reserve(&mut self, additional: usize) -> Result<(), ListError<V::Error>>

Reserves memory for the give number of additional elements in this LinkedList.

source

pub fn capacity(&self) -> usize

Returns the number of elements this LinkedList is capable of storing.

Since this LinkedList uses an Arena for allocation, it’s capacity is subject to the capacity of the underlying Arena.

source

pub fn len(&self) -> usize

Returns the number of elements stored in this LinkedList.

source

pub fn is_empty(&self) -> bool

Returns whether this LinkedList is empty.

source

pub fn get_mut(&mut self, link: &Link) -> Option<&mut T>

Returns a mutable reference to the element stored in the Node at the given Link.

source

pub fn get(&self, link: &Link) -> Option<&T>

Returns an imutable reference to the element stored in the Node at the given Link.

source

pub fn push_front(&mut self, value: T) -> Result<Link, ListError<V::Error>>

Pushes the given element to the front of this LinkedList.

source

pub fn push_back(&mut self, value: T) -> Result<Link, ListError<V::Error>>

Pushes the given element to the back of this LinkedList.

source

pub fn peek_front(&self) -> Option<&T>

Peeks the element at the front of this list.

source

pub fn peek_back(&self) -> Option<&T>

Peeks the element at the back of this list.

source

pub fn remove(&mut self, link: &Link) -> Option<T>

Removes the element referenced by the given link.

source

pub fn pop_front(&mut self) -> Option<T>

Removes the element at the front of this list.

source

pub fn pop_back(&mut self) -> Option<T>

Removes the element at the back of this list.

source

pub fn shift_push_front(&mut self, link: &Link) -> Option<()>

Shifts the element at the given Link to the front of this list.

source

pub fn shift_push_back(&mut self, link: &Link) -> Option<()>

Shifts the element at the given Link to the back of this list.

source

pub fn iter(&self) -> Iter<'_, V, T>

Returns an iterator to iterate over the elements in this list.

Trait Implementations§

source§

impl<V, T> Default for LinkedList<V, T>where V: Default + Vector<Entry<Node<T>>>,

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'a, V, T> IntoIterator for &'a LinkedList<V, T>where V: Vector<Entry<Node<T>>>,

§

type Item = (&'a Link, &'a T)

The type of the elements being iterated over.
§

type IntoIter = Iter<'a, V, T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

Auto Trait Implementations§

§

impl<V, T> RefUnwindSafe for LinkedList<V, T>where T: RefUnwindSafe, V: RefUnwindSafe,

§

impl<V, T> Send for LinkedList<V, T>where T: Send, V: Send,

§

impl<V, T> Sync for LinkedList<V, T>where T: Sync, V: Sync,

§

impl<V, T> Unpin for LinkedList<V, T>where T: Unpin, V: Unpin,

§

impl<V, T> UnwindSafe for LinkedList<V, T>where T: UnwindSafe, V: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.