Progrust Library.

// dictionary

ジェネリクス(Generics).

ジェネリクス(Generics)

ジェネリクスは、型パラメータを使用して汎用的なコードを書く機能です。同じロジックを複数の型に対して利用できます。

ジェネリック関数

fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
    let mut largest = list[0];
    for &item in list.iter() {
        if item > largest {
            largest = item;
        }
    }
    largest
}

fn main() {
    let numbers = vec![34, 50, 25, 100];
    println!("{}", largest(&numbers));
    
    let chars = vec!['a', 'z', 'm'];
    println!("{}", largest(&chars));
}

ジェネリック構造体

struct Point<T> {
    x: T,
    y: T,
}

impl<T> Point<T> {
    fn x(&self) -> &T {
        &self.x
    }
}

パフォーマンス

Rustのジェネリクスは**単相化(monomorphization)**により、コンパイル時に具体的な型ごとのコードが生成されます。そのため、実行時のオーバーヘッドはありません。

BoxRc<T> (Reference Counting)で動的ディスパッチが必要な場合と異なる特性です。

この辞書が使われているページ

backlinks 1

  1. 辞書トレイト(Trait)