Skip to main content

indexset_with_default

Macro indexset_with_default 

Source
macro_rules! indexset_with_default {
    () => { ... };
    ($H:ty $(;)?) => { ... };
    ($H:ty; $($value:expr),+ $(,)?) => { ... };
}
Expand description

Create an IndexSet from a list of values and a BuildHasherDefault-wrapped custom hasher.

ยงExample

use indexmap::indexset_with_default;
use fnv::FnvHasher;

let set = indexset_with_default!{
    FnvHasher;
    "a",
    "b",
};
assert!(set.contains("a"));
assert!(set.contains("b"));
assert!(!set.contains("c"));

// "a" is the first value
assert_eq!(set.iter().next(), Some(&"a"));

This can also be initialized in const contexts:

use indexmap::{IndexSet, indexset_with_default};
use fnv::FnvBuildHasher; // = BuildHasherDefault<FnvHasher>
use std::sync::Mutex;

static INTERN: Mutex<IndexSet<String, FnvBuildHasher>> =
    Mutex::new(indexset_with_default!());

if let Ok(mut set) = INTERN.lock() {
    set.insert("a".into());
    set.insert("b".into());
    set.insert("c".into());
}

assert!(INTERN.lock().unwrap().contains("a"));
assert!(INTERN.lock().unwrap().contains("b"));
assert!(INTERN.lock().unwrap().contains("c"));