Композиция вместо наследования
// Copyright 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,
}
-
Вместо миксинов или наследования мы составляем типы из полей разных типов.
У этого подхода есть недостатки, в основном в эргономике доступа к полям, но он даёт разработчикам большой контроль и ясность в том, что делает тип и к чему у него есть доступ.
-
При выводе трейтов через derive убедитесь, что все типы полей структуры или типы вариантов перечисления реализуют этот трейт. Макросы derive часто предполагают, что все типы, из которых составлен новый тип, уже реализуют этот трейт.