Crate eclectic [] [src]

Collection traits for generic programming.

Code that uses these traits should use them as generally as possible. For example, consider the following function that fills a map with default values for some keys:

use eclectic::map::*;

fn fill<M, K>(keys: K) -> M
where
    M: Default + Map,
    K: IntoIterator<Item = M::Key>,
    M::Value: Default,
{
    let mut map = M::default();
    for key in keys { map.insert(key, M::Value::default()); }
    map
}

Map is a convenient shorthand for code that uses multiple map APIs, but this code only ever calls insert, so it could be rewritten more generally as:

use eclectic::map;

fn fill<M, K>(keys: K) -> M
where
    M: Default + map::Insert,
    K: IntoIterator<Item = M::Key>,
    M::Value: Default,
{
    let mut map = M::default();
    for key in keys { map.insert(key, M::Value::default()); }
    map
}

Modules

map

Maps.

set

Sets.

Traits

Clear

A collection that can be cleared.

Len

A collection that contains a finite number of items.