継承よりコンポジション
// 著作権 2025 Google LLC // SPDX-License-Identifier: Apache-2.0 pub struct Uuid([u8; 16]); pub struct Address { street: String, city_or_province: String, code: String, country: String, } pub struct User { id: Uuid, address: Address, }
-
ミックスインや継承ではなく、異なる型のフィールドを作成することで型を組み合わせます。
これには欠点もあり、主にフィールドアクセスの使い勝手に関するものですが、その一方で、型が何を行い、何にアクセスできるのかについて、開発者に大きな制御性と明確さをもたらします。
-
trait を derive する際は、struct のすべてのフィールド型、または enum のすべてのバリアント型がその trait を実装していることを確認してください。derive マクロは、新しい型を構成するすべての型がその trait をすでに実装していることを前提としていることがよくあります。