Illetve plusz egy kérdés merült fel bennem, ezt valaki, aki ért a nyelvhez, megválaszolhatná:
OOP-ban az öröklődésnek az az értelme, hogy egy helyen legyen leírva olyan tevékenység, amit aztán minden leszármazott használhat. Ha változtatni kell, akkor egy helyen változtatjuk meg.
Szóval ha a példát nézem, akkor mondjuk van egy kerület függvény, ami visszaadja a síkidom összes oldalának a hosszának az összegét. Ha van valami trükkös síkidom, mondjuk kör, aminek nem szakaszok alkotják az oldalát, vagy a cikkben említett egy két oldalával és a közöttük levő szöggel megadott háromszög, akkor ezekben vagy implementálja az ember az adott síkidomhoz való kerület számolást (pl. a kör esetében), vagy olyan függvényeket implementál, ami ha a határoló szakaszokat lekérdezi valaki, akkor kiszámolja, hogy OK, a megadott szög és oldalak alapján a három oldal, amit kérdeztél, a, b és c hosszú, aztán ezt az eredményt már az örökölt kerület számoló függvény fel tudja használni.
Úgy tűnik a cikk alapján, hogy ez pont fordítva van a Rust nyelven: minden egyes síkidom esetén, ahol a Trait-ben benne van a kerület, a kerület kiszámítást implementálni kell. Annyiszor, ahány féle síkidomunk van (és a kétféle módon megadott háromszög két különbözőnek fog számítani). És várhatóan a négyzetnek, a téglalapnak, a rombusznak és minden más négyszögnek ugyanaz lesz az implementációja. Szóval ugyanazt a függvény törzset kell leírni sokszor.
Ha ez tényleg így van, akkor ez nem tetszik.