| //@ run-pass | |
| #![allow(non_camel_case_types)] | |
| trait sum { | |
| fn sum_(self) -> isize; | |
| } | |
| // Note: impl on a slice | |
| impl<'a> sum for &'a [isize] { | |
| fn sum_(self) -> isize { | |
| self.iter().fold(0, |a, &b| a + b) | |
| } | |
| } | |
| fn call_sum(x: &[isize]) -> isize { x.sum_() } | |
| pub fn main() { | |
| let x = vec![1, 2, 3]; | |
| let y = call_sum(&x); | |
| println!("y=={}", y); | |
| assert_eq!(y, 6); | |
| let x = vec![1, 2, 3]; | |
| let y = x.sum_(); | |
| println!("y=={}", y); | |
| assert_eq!(y, 6); | |
| let x = vec![1, 2, 3]; | |
| let y = x.sum_(); | |
| println!("y=={}", y); | |
| assert_eq!(y, 6); | |
| } |