問題一覧に戻る
中級ジェネリクス
問題74: ジェネリックトレイト

ジェネリックトレイトは型パラメータを受け取り、柔軟なインターフェースを実現します。関連型と異なり、ジェネリックトレイトは異なる型パラメータで複数の実装が可能です。コンテナ、変換器、様々な型で動作する操作に有用です。違いを理解することで、APIデザインに適切な抽象化を選択できます。

// ジェネリックトレイト
trait Container<> {
fn add(&mut self, value: );
fn get(&self) -> Option<&>;
}

struct MyBox<> {
value: Option<>,
}

// ジェネリック実装
impl<> Container<> for MyBox<> {
fn add(&mut self, value: ) {
self.value = Some(value);
}

fn get(&self) -> Option<&> {
self.value.()
}
}

fn main() {
// 使用例
let mut box1: MyBox<> = MyBox { value: None };
box1.add(42);
println!("{:?}", box1.get());
}