dyn trait を使った異種データ
// Copyright 2025 Google LLC // SPDX-License-Identifier: Apache-2.0 use std::fmt::Display; pub struct Lambda; impl Display for Lambda { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "λ") } } fn main() { let heterogeneous: Vec<Box<dyn Display>> = vec![ Box::new(42u32), Box::new(String::from("Woah")), Box::new(Lambda), ]; for item in heterogeneous { // "item" が Display を実装していることは分かっていますが、それ以外は何も分かりません! println!("Display output: {}", item); } }
-
dyn Traitは動的ディスパッチのためのツールであり、コレクションに異種データを 格納できます。 -
この例では、すべて
std::fmt::Displayを実装する型を格納し、そのコレクション内の すべての要素を画面に出力しています。