Name: Anonymous 2019-01-25 15:56
CONSIDER this Rust code that a reasonable human being might try to write:
If you try to compile that, you’ll get an error like this:
:1:25: 1:30 error: binary operation `+` cannot be applied to type `T`
What you actually have to write is something like this:
Now it typechecks correctly.
This seems a little ridiculous. The compiler already knew that T had to be a type that supports addition — it just told me that. So why am I spelling it out?
fn add<T>(a: T, b: T) -> T {
return a + b;
}
If you try to compile that, you’ll get an error like this:
:1:25: 1:30 error: binary operation `+` cannot be applied to type `T`
What you actually have to write is something like this:
use std::ops::Add;
fn add<T: Add>(a: T, b: T) -> T::Output {
return a + b;
}
Now it typechecks correctly.
This seems a little ridiculous. The compiler already knew that T had to be a type that supports addition — it just told me that. So why am I spelling it out?