See the question in the code comment below:

```
trait Number: Copy + Into<f64> {}
fn average<T>(numbers: &[T]) -> f64
where T: Copy + Into<f64> {
//where T: Number { // Why doesn't this work as an alternative to the previous line?
let mut sum = 0.0;
for n in numbers {
let float: f64 = (*n).into();
sum += float;
}
sum / numbers.len() as f64
// This is a shorter alternative to the code above.
//let sum = numbers.iter().copied().map(Into::into).sum::<f64>();
}
fn main() {
let numbers = [200u8, 255u8, 3u8];
println!("average = {:.1}", average(&numbers)); // 152.7
}
```

Output:

```
average = 152.7
```

Errors:

```
Compiling playground v0.0.1 (/playground)
Finished dev [unoptimized + debuginfo] target(s) in 0.78s
Running `target/debug/playground`
```