Hi,

I am trying to write a generic vector and does a bunch of computation. In one step, I need to fold/reduce the values and this has proved much harder (and frustrating) than I thought. I am using rust 1.2.

Here is a simplified version,

```
extern crate num;
use std::ops::Add;
pub fn foo<T: Add + num::traits::Num >(a: Vec<T>) -> T {
let b = vec![1,2,3,5,7,8];
let z = b.iter().fold(0, |s,v| s+v);
let res = a.iter().fold(num::zero(), |sum, x| sum + x);
res
}
```

I get the following error,

```
src\utils.rs:15:51: 15:58 error: the trait `core::ops::Add<&T>` is not implement
ed for the type `T` [E0277]
src\utils.rs:15 let res = a.iter().fold(num::zero(), |sum, x| sum + x);
^~~~~~~
note: in expansion of closure expansion
```

As a related question, why is there not a simple `Numeric`

trait that provides basic numeric properties. I was unable to find one. In other words why do I need to work at the granularity of specifying Add, Sub etc …