Struct bitflags::__core::collections::linked_list::LinkedList
[−]
[src]
pub struct LinkedList<T> {
// some fields omitted
}1.0.0A doubly-linked list.
Methods
impl<T> LinkedList<T>
fn new() -> LinkedList<T>
Creates an empty LinkedList.
fn append(&mut self, other: &mut LinkedList<T>)
Moves all elements from other to the end of the list.
This reuses all the nodes from other and moves them into self. After
this operation, other becomes empty.
This operation should compute in O(1) time and O(1) memory.
Examples
use std::collections::LinkedList; let mut a = LinkedList::new(); let mut b = LinkedList::new(); a.push_back(1); a.push_back(2); b.push_back(3); b.push_back(4); a.append(&mut b); for e in &a { println!("{}", e); // prints 1, then 2, then 3, then 4 } println!("{}", b.len()); // prints 0
fn iter(&self) -> Iter<T>
Provides a forward iterator.
fn iter_mut(&mut self) -> IterMut<T>
Provides a forward iterator with mutable references.
fn is_empty(&self) -> bool
Returns true if the LinkedList is empty.
This operation should compute in O(1) time.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); assert!(dl.is_empty()); dl.push_front("foo"); assert!(!dl.is_empty());
fn len(&self) -> usize
Returns the length of the LinkedList.
This operation should compute in O(1) time.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); dl.push_front(2); assert_eq!(dl.len(), 1); dl.push_front(1); assert_eq!(dl.len(), 2); dl.push_back(3); assert_eq!(dl.len(), 3);
fn clear(&mut self)
Removes all elements from the LinkedList.
This operation should compute in O(n) time.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); dl.push_front(2); dl.push_front(1); assert_eq!(dl.len(), 2); assert_eq!(dl.front(), Some(&1)); dl.clear(); assert_eq!(dl.len(), 0); assert_eq!(dl.front(), None);
fn contains(&self, x: &T) -> bool where T: PartialEq<T>
linked_list_contains): recently added
Returns true if the LinkedList contains an element equal to the
given value.
fn front(&self) -> Option<&T>
Provides a reference to the front element, or None if the list is
empty.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); assert_eq!(dl.front(), None); dl.push_front(1); assert_eq!(dl.front(), Some(&1));
fn front_mut(&mut self) -> Option<&mut T>
Provides a mutable reference to the front element, or None if the list
is empty.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); assert_eq!(dl.front(), None); dl.push_front(1); assert_eq!(dl.front(), Some(&1)); match dl.front_mut() { None => {}, Some(x) => *x = 5, } assert_eq!(dl.front(), Some(&5));
fn back(&self) -> Option<&T>
Provides a reference to the back element, or None if the list is
empty.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); assert_eq!(dl.back(), None); dl.push_back(1); assert_eq!(dl.back(), Some(&1));
fn back_mut(&mut self) -> Option<&mut T>
Provides a mutable reference to the back element, or None if the list
is empty.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); assert_eq!(dl.back(), None); dl.push_back(1); assert_eq!(dl.back(), Some(&1)); match dl.back_mut() { None => {}, Some(x) => *x = 5, } assert_eq!(dl.back(), Some(&5));
fn push_front(&mut self, elt: T)
Adds an element first in the list.
This operation should compute in O(1) time.
Examples
use std::collections::LinkedList; let mut dl = LinkedList::new(); dl.push_front(2); assert_eq!(dl.front().unwrap(), &2); dl.push_front(1); assert_eq!(dl.front().unwrap(), &1);
fn pop_front(&mut self) -> Option<T>
Removes the first element and returns it, or None if the list is
empty.
This operation should compute in O(1) time.
Examples
use std::collections::LinkedList; let mut d = LinkedList::new(); assert_eq!(d.pop_front(), None); d.push_front(1); d.push_front(3); assert_eq!(d.pop_front(), Some(3)); assert_eq!(d.pop_front(), Some(1)); assert_eq!(d.pop_front(), None);
fn push_back(&mut self, elt: T)
Appends an element to the back of a list
Examples
use std::collections::LinkedList; let mut d = LinkedList::new(); d.push_back(1); d.push_back(3); assert_eq!(3, *d.back().unwrap());
fn pop_back(&mut self) -> Option<T>
Removes the last element from a list and returns it, or None if
it is empty.
Examples
use std::collections::LinkedList; let mut d = LinkedList::new(); assert_eq!(d.pop_back(), None); d.push_back(1); d.push_back(3); assert_eq!(d.pop_back(), Some(3));
fn split_off(&mut self, at: usize) -> LinkedList<T>
Splits the list into two at the given index. Returns everything after the given index, including the index.
Panics
Panics if at > len.
This operation should compute in O(n) time.
Examples
use std::collections::LinkedList; let mut d = LinkedList::new(); d.push_front(1); d.push_front(2); d.push_front(3); let mut splitted = d.split_off(2); assert_eq!(splitted.pop_front(), Some(1)); assert_eq!(splitted.pop_front(), None);
fn front_place(&mut self) -> FrontPlace<T>
collection_placement): method name and placement protocol are subject to change
Returns a place for insertion at the front of the list.
Using this method with placement syntax is equivalent to push_front, but may be more efficient.
Examples
#![feature(collection_placement)] #![feature(placement_in_syntax)] use std::collections::LinkedList; let mut list = LinkedList::new(); list.front_place() <- 2; list.front_place() <- 4; assert!(list.iter().eq(&[4, 2]));
fn back_place(&mut self) -> BackPlace<T>
collection_placement): method name and placement protocol are subject to change
Returns a place for insertion at the back of the list.
Using this method with placement syntax is equivalent to push_back,
but may be more efficient.
Examples
#![feature(collection_placement)] #![feature(placement_in_syntax)] use std::collections::LinkedList; let mut list = LinkedList::new(); list.back_place() <- 2; list.back_place() <- 4; assert!(list.iter().eq(&[2, 4]));
Trait Implementations
impl<A> Hash for LinkedList<A> where A: Hash
fn hash<H>(&self, state: &mut H) where H: Hasher
1.3.0fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
impl<A> Debug for LinkedList<A> where A: Debug
impl<A> Clone for LinkedList<A> where A: Clone
fn clone(&self) -> LinkedList<A>
fn clone_from(&mut self, source: &Self)
impl<A> Ord for LinkedList<A> where A: Ord
fn cmp(&self, other: &LinkedList<A>) -> Ordering
impl<A> PartialOrd<LinkedList<A>> for LinkedList<A> where A: PartialOrd<A>
fn partial_cmp(&self, other: &LinkedList<A>) -> Option<Ordering>
fn lt(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
fn gt(&self, other: &Rhs) -> bool
fn ge(&self, other: &Rhs) -> bool
impl<A> Eq for LinkedList<A> where A: Eq
impl<A> PartialEq<LinkedList<A>> for LinkedList<A> where A: PartialEq<A>
fn eq(&self, other: &LinkedList<A>) -> bool
fn ne(&self, other: &LinkedList<A>) -> bool
impl<'a, T> Extend<&'a T> for LinkedList<T> where T: Copy + 'a1.2.0
fn extend<I>(&mut self, iter: I) where I: IntoIterator<Item=&'a T>
impl<A> Extend<A> for LinkedList<A>
fn extend<T>(&mut self, iter: T) where T: IntoIterator<Item=A>
impl<T> IntoIterator for LinkedList<T>
type Item = T
type IntoIter = IntoIter<T>
fn into_iter(self) -> IntoIter<T>
Consumes the list into an iterator yielding elements by value.