dlist 0.1.4

List data structure based on AVL tree. It can store elements which have dimension and quickly search for elements by distance from 0.
Documentation
extern crate dlist;

use dlist::{DList, ItemInfo, Measurer};

struct StringMeasurer;

impl Measurer<String> for StringMeasurer {
    type Measure = usize;
    fn nil(&self) -> usize {
        0
    }

    fn measure(&self, value: &String) -> usize {
        value.len()
    }
}

#[test]
fn del_odd() {
    let mut dl = DList::new(StringMeasurer);
    dl.append("a".to_string());
    dl.append("b".to_string());
    dl.append("c".to_string());
    dl.append("d".to_string());
    dl.append("e".to_string());
    dl.append("f".to_string());
    dl.delete(0);
    dl.delete(1);
    dl.delete(2);
    assert_eq!(
        Some(ItemInfo {
            index: 0,
            item: &"b".to_string(),
            inner_distance: 0,
            outer_distance: 0,
        }),
        dl.get_by_index(0)
    );
    assert_eq!(
        Some(ItemInfo {
            index: 1,
            item: &"d".to_string(),
            inner_distance: 0,
            outer_distance: 1,
        }),
        dl.get_by_index(1)
    );
    assert_eq!(
        Some(ItemInfo {
            index: 2,
            item: &"f".to_string(),
            inner_distance: 0,
            outer_distance: 2,
        }),
        dl.get_by_index(2)
    );
}