Okay. I like the idea of rust, but I’ve not found the experience of learning rust to be especially user-friendly. I’m working on a computer vision application, and I’d like to build a simple math library to get myself started. My first crack at the implementation is starting with the lowly 3D vector.

```
struct Vec3<T : Add + Copy> {
x: T,
y: T,
z: T
}
```

My thought is that any type that should live in the vector struct needs to support addition. The next step is to define addition on my Vec3, like so:

```
impl<T> Add for Vec3<T> where T:Add + Copy {
type Output = Vec3<T>;
fn add(self, rhs: Vec3<T>) -> Vec3<T> {
Vec3<T:Add+Copy>{x: (self.x + rhs.x), y: (self.y + rhs.y), z: (self.z + rhs.z)}
}
}
```

This doesn’t work! rustc tells me that the problem is as follows:

```
error: expected one of `!`, `.`, `::`, `;`, `{`, `}`, or an operator, found `:`
geometry/three/mod.rs:13 Point<T:Add+Copy>{x: (self.x + rhs.x), y: (self.y + rhs.y), z: (self.z + rhs.z)}
```

It’s quite easy to modify things to get other errors… but it’s not clear to me how this example should be written to make the compiler happy. I would appreciate the wisdom of those who have trod this path before me.