Hello!

Can anyone explain to me why this will not work inside of the function "dist"?

```
use std::ops::{Add, Sub};
#[derive(Debug, Copy, Clone, PartialEq)]
struct T3<T> {
x: T,
y: T,
z: T
}
// Construct type for particle
struct Particle<T,U>{
pos: T3<T>,
vel: T3<T>,
rhop: U
}
// Notice that the implementation uses the associated type `Output`.
impl<T: Add<Output = T>> Add for T3<T> {
type Output = Self;
fn add(self, other: Self) -> Self::Output {
Self {
x: self.x + other.x,
y: self.y + other.y,
z: self.z + other.z
}
}
}
fn dist<T,U>(arg1: Particle<T,U>, arg2: Particle<T,U>){
let a = arg1.pos;
let b = arg2.pos;
let res = a + b;
}
```

The last line "let res = a + b" will not work and I get the error:

I do not understand why this implementation would be missing when I have defined it? If I do it directly in main, i.e. without defining "dist" it works.

Kind regards