Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
array_diff(vec![1,2], vec![1]) == vec![2]
array_diff(vec![1,2,2,2,3], vec![2]) == vec![1,3]
fn array_diff<T: PartialEq>(a: Vec<T>, b: Vec<T>) -> Vec<T> {
unimplemented!()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn returns_expected() {
assert_eq!(array_diff(vec![1,2], vec![1]), vec![2]);
assert_eq!(array_diff(vec![1,2,2], vec![1]), vec![2,2]);
assert_eq!(array_diff(vec![1,2,2], vec![2]), vec![1]);
assert_eq!(array_diff(vec![1,2,2], vec![]), vec![1,2,2]);
assert_eq!(array_diff(vec![], vec![1,2]), vec![]);
}
}
fn array_diff<T: PartialEq>(a: Vec<T>, b: Vec<T>) -> Vec<T> {
a.into_iter().filter(|v|{
for item in &b {
if *v == *item {
return false
}
}
true
}).collect()
}
fn array_diff<T: PartialEq>(a: Vec<T>, b: Vec<T>) -> Vec<T> {
a.into_iter().filter(|x| !b.contains(x)).collect()
}