[][src]Struct binjs::meta::util::name_sorter::NameSorter

pub struct NameSorter<T> { /* fields omitted */ }

A type used to sort names by length, then prefixes, to speed up lookups.

Methods

impl<T> NameSorter<T>[src]

pub fn new() -> NameSorter<T>[src]

pub fn len(&self) -> usize[src]

Return the number of items in the sorter.

pub fn insert(&mut self, key: &str, value: T) -> Option<T>[src]

Insert a value in a sorter.

let mut sorter = binjs_meta::util::name_sorter::NameSorter::new();
assert_eq!(sorter.len(), 0);

assert!(sorter.insert("abcd", 0).is_none());
assert_eq!(sorter.len(), 1);
assert_eq!(*sorter.get("abcd").unwrap(), 0);
assert!(sorter.get("dbca").is_none());
assert!(sorter.get("").is_none());

assert!(sorter.insert("dcba", 1).is_none());
assert_eq!(sorter.len(), 2);
assert_eq!(*sorter.get("abcd").unwrap(), 0);
assert_eq!(*sorter.get("dcba").unwrap(), 1);
assert!(sorter.get("").is_none());

assert_eq!(sorter.insert("abcd", 3).unwrap(), 0);
assert_eq!(sorter.len(), 2);
assert_eq!(*sorter.get("abcd").unwrap(), 3);
assert_eq!(*sorter.get("dcba").unwrap(), 1);
assert!(sorter.get("").is_none());

assert!(sorter.insert("", 4).is_none());
assert_eq!(sorter.len(), 3);
assert_eq!(*sorter.get("abcd").unwrap(), 3);
assert_eq!(*sorter.get("dcba").unwrap(), 1);
assert_eq!(*sorter.get("").unwrap(), 4);

assert_eq!(sorter.insert("", 5).unwrap(), 4);
assert_eq!(sorter.len(), 3);
assert_eq!(*sorter.get("abcd").unwrap(), 3);
assert_eq!(*sorter.get("dcba").unwrap(), 1);
assert_eq!(*sorter.get("").unwrap(), 5);

pub fn iter(&self) -> impl Iterator<Item = (usize, &Node<T>)>[src]

pub fn get(&self, key: &str) -> Option<&T>[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for NameSorter<T> where
    T: RefUnwindSafe

impl<T> Send for NameSorter<T> where
    T: Send

impl<T> Sync for NameSorter<T> where
    T: Sync

impl<T> Unpin for NameSorter<T> where
    T: Unpin

impl<T> UnwindSafe for NameSorter<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any
[src]

impl<T> DowncastSync for T where
    T: Send + Sync + Any
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]