https://doc.rust-jp.rs/book-ja/ch10-02-traits.html#%E3%83%88%E3%83%AC%E3%82%A4%E3%83%88%E5%A2%83%E7%95%8C%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E5%AE%9F%E8%A3%85%E3%82%92%E6%9D%A1%E4%BB%B6%E5%88%86%E3%81%91%E3%81%99%E3%82%8B [[トレイト境界]]を満たすあらゆる型に[[トレイト]]を実装すること。 ```rust use std::fmt::Display; trait Dog { fn won(&self) { println!("won!") } } // Displayトレイトを実装しているあらゆる型にDogトレイトを実装 // ...というおまじない impl<T: Display> Dog for T {} fn main() { let a = String::from("hoge"); // String型はDisplayトレイトを実装しているのでwonが呼べる a.won(); } ``` 標準ライブラリだと[[Displayトレイト]]が実装されたすべての型で`to_string`を使えるのはそういうワケ。 ```rust impl<T: Display> ToString for T { // --snip-- } ```