Traits can have implemented methods.
The functions have no direct access to the inner fields of a struct, but it can be useful for sharing behavior between many trait implementors.