pub fn set_union_vec<'val, 'arr, T>(vec1: &'arr [T], vec2: &'arr [T]) -> Vec<&'val T>
where
'arr: 'val,
T: PartialEq + 'val,
{
let mut result = vec![];
for v1 in vec1 {
match result.iter().find(|&&v| v == v1) {
Some(..) => {}
None => result.push(v1),
}
}
for v2 in vec2 {
match result.iter().find(|&&v| v == v2) {
Some(..) => {}
None => result.push(v2),
}
}
result
}
pub fn set_is_subset<'val, 'arr, T>(sub: &'arr [T], sup: &'arr [T]) -> bool
where
'arr: 'val,
T: PartialEq + 'val,
{
sub.iter()
.all(|sub_value|
sup.iter()
.any(|sup_value|
sub_value == sup_value
)
)
}
pub fn set_has_intersection<'val, 'arr, T>(s1: &'arr [T], s2: &'arr [T]) -> bool
where
'arr: 'val,
T: PartialEq + 'val,
{
s1.iter()
.any(|sub_value|
s2.iter()
.any(|sup_value|
sub_value == sup_value
)
)
}