A very powerful implication of Trait bounds in Rust is that we can implement a trait for any type that implements another trait. These are called blanket implementations, and are used extensively in Rust’s standard library.
For example, we can define that any type that implements the Display
trait also implements the ToString
trait.