Multiple Bounds
We'll cover the following...
I want to write a function, info,
that prints out some information about a number. It’s easier if I just show it to you:
Press + to interact
trait Double {fn double(self) -> Self;}impl Double for i32 {fn double(self) -> i32 { self * 2 }}fn info(x: i32) {println!("Original number: {}", x);println!("Doubled number: {}", x.double());println!("Quadrupled number: {}", x.double().double());}fn main() {info(5);}
Since our info
is defined in terms of the double
method only, though, it seems like we should be able to parameterize. Try changing the signature from i32
to a type parameter:
Press + to interact
fn info<T: Double>(x: T)
This generates an error message:
error[E0277]: `T` doesn't implement `std::fmt::Display`
--> src/main.rs:10:37
|
9 | fn info<T: Double>(x: T) {
| -- help: consider further
...