Rust-generic-types
Rust-ジェネリック型
ジェネリックは、異なるタイプの複数のコンテキストのコードを記述する機能です。 Rustでは、ジェネリックはデータ型と特性のパラメータ化を指します。 Genericsでは、コードの重複を減らし、タイプセーフを提供することで、より簡潔でクリーンなコードを作成できます。 ジェネリックの概念は、メソッド、関数、構造、列挙、コレクション、および特性に適用できます。
typeパラメーターとして知られる _ <T> syntax_ は、汎用構造の宣言に使用されます。 _T_は任意のデータ型を表します。
イラスト:ジェネリックコレクション
次の例では、整数のみを格納できるベクトルを宣言しています。
出力
次のスニペットを考慮してください-
上記の例は、整数型のベクトルは整数値のみを格納できることを示しています。 したがって、文字列値をコレクションにプッシュしようとすると、コンパイラはエラーを返します。 ジェネリックは、コレクションの型をより安全にします。
図:ジェネリック構造
typeパラメーターは、コンパイラーが後で入力する型を表します。
上記の例は、_Data_という名前の汎用構造を宣言しています。 _ <T> _タイプは、何らかのデータタイプを示します。 _main()_関数は、構造体の整数インスタンスと文字列インスタンスの2つのインスタンスを作成します。
出力
特性
特性を使用して、複数の構造にわたって動作(メソッド)の標準セットを実装できます。 特性は、オブジェクト指向プログラミングの*インターフェイス*のようなものです。 特性の構文は以下のとおりです-
特性を宣言する
トレイトには、具象メソッド(ボディのあるメソッド)または抽象メソッド(ボディのないメソッド)を含めることができます。 メソッド定義がTraitを実装するすべての構造で共有される場合、具体的なメソッドを使用します。 ただし、構造体は、特性によって定義された関数をオーバーライドすることを選択できます。
メソッドの定義が実装構造によって異なる場合は、抽象メソッドを使用します。
構文-特性を実装する
次の例では、構造_book_によって実装されるメソッド_print()_で特性_Printable_を定義しています。
出力
汎用関数
この例では、渡されたパラメーターを表示する汎用関数を定義しています。 パラメーターは任意のタイプにすることができます。 パラメータのタイプは、値をprintlnで印刷できるように、表示特性を実装する必要があります! マクロ。