diff --git a/code/rust/src/core/utils.rs b/code/rust/src/core/utils.rs index 8ce35d5..8f90228 100644 --- a/code/rust/src/core/utils.rs +++ b/code/rust/src/core/utils.rs @@ -4,6 +4,10 @@ extern crate regex; +use std::hash::Hash; +use std::collections::HashMap; +use std::collections::HashSet; + use self::regex::Regex; // ---------------------------------------------------------------- @@ -57,5 +61,29 @@ pub fn remove_first(x: &Vec) -> Vec if n == 0 { return Vec::::new(); } - return restrict::(x, 0, n); + return restrict::(x, 1, n); +} + +// ---------------------------------------------------------------- +// METHODS Vectors to sets +// ---------------------------------------------------------------- + +#[allow(dead_code)] +pub fn vec_to_set(x: &Vec) -> HashSet + where T: Eq + Hash + Clone +{ + return x.iter() + .map(|u| {u.clone()}) + .collect(); +} + +#[allow(dead_code)] +pub fn vec_to_multiset(x: &Vec) -> HashMap + where T: Eq + Hash + Copy +{ + let mut counted = HashMap::::new(); + for u in x.iter() { + *counted.entry(u.clone()).or_insert(0) += 1 + } + return counted; }