use prelude;
pub fn positions<T: Eq>(list: &[T], item: T) -> Vec<i32> {
let mut collector: Vec<i32> = vec![];
for counter in 0 .. list.len() {
if list[counter] == item {
collector.push(counter.clone() as i32);
}
}
return collector;
}
pub fn before<T: Eq+Clone>(list: &[T], item: T) -> Vec<T> {
prelude::filter_break(list, |c: &T| -> bool {*c != item})
}
pub fn after<T: Eq+Clone>(list: &[T], item: T) -> Vec<T> {
prelude::drop_break(list, |c: &T| -> bool {*c != item})
}
pub fn between<T: Eq+Clone>(list: &[T], (d1, d2): (T, T)) -> Vec<T> {
before(&after(list, d1), d2)
}