dynstr 0.1.1

A string implementation optimized for manipulations.
Documentation
use dynstr::DynamicString;

#[test]
fn append() {
    let s0 = DynamicString::new("Foo");
    let s1 = DynamicString::new("Bar");
    assert_eq!(s0 + s1, "FooBar");
    assert_eq!(DynamicString::empty() + DynamicString::empty(), DynamicString::empty());
    assert_eq!(DynamicString::empty() + "X", DynamicString::new("X"));
    assert_eq!(DynamicString::new("X") + DynamicString::empty(), DynamicString::new("X"));
}

#[test]
fn index_of() {
    assert_eq!(
        DynamicString::new("Hello World").index_of(DynamicString::new("ell")),
        Some(1)
    );
    assert_eq!(
        DynamicString::new("Hello World").index_of(DynamicString::new("Wor")),
        Some(6)
    );
    assert_eq!(
        DynamicString::new("Hello World").index_of(DynamicString::new("elle")),
        None
    );
    assert_eq!(
        DynamicString::new("").index_of(DynamicString::new("")),
        Some(0)
    );
    assert_eq!(
        DynamicString::new("ABC").index_of(DynamicString::new("")),
        Some(0)
    );
}

#[test]
fn split() {
    let source = DynamicString::new("01#-;23#-;45");
    let result = source.split(DynamicString::new("#-;"), None);
    assert_eq!(
        result
            .iter()
            .map(|x| String::from(x))
            .collect::<Vec<String>>(),
        vec!["01", "23", "45"]
    );
}

#[test]
fn split_empty_source() {
    let source = DynamicString::new("");
    let result = source.split(DynamicString::new("A"), None);
    assert_eq!(
        result
            .iter()
            .map(|x| String::from(x))
            .collect::<Vec<String>>(),
        vec![""]
    );
}

#[test]
fn split_empty_pattern() {
    let source = DynamicString::new("ABC");
    let result = source.split(DynamicString::new(""), None);
    assert_eq!(
        result
            .iter()
            .map(|x| String::from(x))
            .collect::<Vec<String>>(),
        vec!["A", "B", "C"]
    );
}

#[test]
fn split_empty() {
    let source = DynamicString::new("");
    let result = source.split(DynamicString::new(""), None);
    assert_eq!(
        result
            .iter()
            .map(|x| String::from(x))
            .collect::<Vec<String>>(),
        Vec::<String>::new()
    );
}