Well I'm a lover of scala and I dislike deep inheritence.
That's actually why I love the model of golang and rust.
They model the real world more closely.
When you look at a desk, how do you define it?
Well if it's a wooden desk it's actually the type Wood and it porbably has 4 table legs and probably a desk size of x*x.
So this is way easier to represent with Subtyping, since a Desk can be made of wooden, but doesn't need to, so with structual inheritance that would mean a lot of boilerplate if you would need to define all type's of desks while in rust you would just add the impl trait to any of the base struct's, etc.
Also deep inheritance can be nasty to debug, even Scala will probably move to a more flat level in their collections library.
That's actually why I love the model of golang and rust. They model the real world more closely.
When you look at a desk, how do you define it?
Well if it's a wooden desk it's actually the type Wood and it porbably has 4 table legs and probably a desk size of x*x. So this is way easier to represent with Subtyping, since a Desk can be made of wooden, but doesn't need to, so with structual inheritance that would mean a lot of boilerplate if you would need to define all type's of desks while in rust you would just add the impl trait to any of the base struct's, etc.
Also deep inheritance can be nasty to debug, even Scala will probably move to a more flat level in their collections library.