The benefit of traits vs. classes is that I can add *functions* to existing objects without needing to modify a monolithic definition. The benefit of ECS vs. structs is that I can add *data* to existing objects without needing to modify a monolithic definition.
Eg a helper function that computes what entity the player is looking at. It depends on global resources (physics engine, ray caster), but I don't want to make it a separate system. To call `player.looked_entity()` I have to pass through all its dependencies -- leaky abstraction.
cognitive psychology. PhD