In my experience, 90% of the time people use inheritance but they really only cared about composition, and their language simply does not have any convenient facility to compose types and re-export their methods.
With a good type system that includes traits, you almost never need virtual dispatching, as any Rust developer may tell.
With a good type system that includes traits, you almost never need virtual dispatching, as any Rust developer may tell.