関係書目トレイトトレイトはある型が提供しなければならない機能をRustのコンパイラに伝える言語機能です。キーワードを思い出して下さい。}}始めにトレイトをメソッドのシグネチャと共に定義し、続いてある型のためにトレイトを実装するという流れを除けばトレイトはメソッド構文に似ています。トレイトを実装しています。ブロックにとても似ているように見えますが、関数本体を定義せず、型シグネチャだけを定義しています。ジェネリック関数におけるトレイト境界トレイトはある型の振る舞いを確約できるため有用です。許容する型のみを受け取るためにトレイトを利用できます。以下の関数を考えて下さい、これはコンパイルできません。shape.area());}Rustは以下のエラーを吐きます。メソッドが実装されているか確認できません。トレイト境界を追加でき、境界が実装を保証してくれます。トレイトを実装するあらゆる型」という意味です。メソッドを持っていることを確認できます。トレイトの動作を確認するために拡張した例が以下になります。ジェネリックですが、適切な型が渡されることを保証しています。}print_area(5);コンパイル時エラーが発生します。[E0277]ジェネリック構造体におけるトレイト境界ジェネリック構造体もトレイト境界による恩恵を受けることができます。型パラメータを宣言する際に境界を追加するだけで良いのです。トレイトを実装しなければなりません。}これで、長方形を等値性の比較できる任意の型として定義できました。構造体を新たに定義しました-実は、等値性を比較できるほぼ全ての型に対して利用可能なオブジェクトです。ついてより詳しく知らなければなりません。トレイト実装のルールここまでで、構造体へトレイトの実装を追加することだけを説明してきましたが、あらゆる型についてトレイトを実装することもできます。}}5.area();しかし例え可能であったとしても、そのようなプリミティブ型のメソッドを実装するのは適切でない手法だと考えられています。ここまでくると世紀末感が漂いますが、手に負えなくなることを防ぐためにトレイトの実装周りには2つの制限が設けられています。第1に、あなたのスコープ内で定義されていないトレイトは適用されません。トレイトを提供しています。定義されるメソッド群を持っていません。バイト文字列リテラルです。バイト文字列リテラルです。f.write(buf);エラーは以下のようになります。