automaton 0.0.2

Parse regular languages
Documentation
use std::{cmp, hash};
use std::collections::HashSet;

pub fn pop<T: cmp::Eq + hash::Hash + Clone>(set: &mut HashSet<T>) -> Option<T> {
    let val = set.iter().next().cloned();

    if let Some(val) = val.as_ref() {
        assert!(set.remove(val));
    }

    val
}

pub fn hash<T: hash::Hash>(val: &T) -> u64 {
    use std::hash::Hasher;

    let mut state = hash::SipHasher::new();
    val.hash(&mut state);
    state.finish()
}