در زبان برنامهنویسی Rust، ترکیب به جای وراثت مورد استفاده قرار میگیرد. این مدل به توسعهدهندگان اجازه میدهد تا به جای تمرکز بر روی سلسلهمراتب کلاسها، بر روی قابلیتها تمرکز کنند. به عنوان مثال، تابع collect در Rust به شما اجازه میدهد تا مقادیر یک iterator را به یک مجموعه مانند Vec تبدیل کنید، بدون اینکه نیاز باشد نوع مجموعه بهطور خاص مشخص شود. این کار با استفاده از traitای به نام FromIterator انجام میشود که به هر نوعی اجازه میدهد تا از یک iterator ساخته شود.
در این مدل، هیچکدام از طرفین نیاز ندارند تا از نوع دقیق طرف دیگر آگاه باشند. به عنوان مثال، یک iterator نیازی ندارد بداند که یک vector چگونه عناصر خود را ذخیره میکند و بالعکس. این به توسعهدهندگان اجازه میدهد تا به راحتی انواع جدیدی از iteratorها و مجموعهها را بدون نیاز به تغییر در کدهای موجود اضافه کنند.
مزیت دیگر استفاده از Traits در Rust این است که میتوان قابلیتها را به صورت مستقل تعریف کرد. به عنوان مثال، در کتابخانه استاندارد Rust، دو trait مستقل به نامهای Read و Write وجود دارند که به انواع مختلف اجازه میدهند تا عملیات خواندن و نوشتن را انجام دهند. این قابلیتها به صورت مستقل از هم تعریف شدهاند و یک نوع میتواند یکی از این قابلیتها یا هر دو را پیادهسازی کند.
این رویکرد به توسعهدهندگان اجازه میدهد تا به جای تمرکز بر روی سلسلهمراتب و وراثت، بر روی قابلیتها و تواناییهای واقعی انواع تمرکز کنند. این امر باعث میشود که کدها انعطافپذیرتر و قابل توسعهتر باشند.





