{ fn mul_and_add(&self) -> usize; }
+ impl<'a, P: Plus> Multiplier for &'a [usize] {
+ fn mul_and_add(&self) -> usize {
+ self.iter().fold(1, |a, c| a * c) + P::plus42()
+ }
+ }
+
+ let numbers = vec![1, 2, 3];
+ let mut numbers = &numbers[..];
+ let out = foo::using(&mut numbers, || {
+ foo::with(|x| x.mul_and_add() )
+ }).unwrap();
+
+ assert_eq!(out, 6 + 42);
+ environmental!(foo: trait Multiplier);
+ }
}