> there's no meaningful semantic difference
Traits can be defined for existing structs without changes to the struct definition, so there are at least practical differences.
Examples here: https://blog.theenginerd.com/blog/2015/06/27/traits-on-gener...