It looks like this API is pretty old, and more recent apis have since been attempting to remove as many allocations as possible. It appears that this API itself is performing *a lot* of allocations all over the place when most of them aren't necessary. I'm not sure if you'd want to look into this in this pull request or possibly leave it to later, though. If you're modifying `Path` already it seems like a good time, but if you're busy, then no worries!

Regardless, this inheritance is fine (especially if the traits are usable in the default implementations of the methods). If you can remove them, however, feel free to. I'd love to drop the `Clone` bound, but that's coupled with changing these functions to perform fewer allocations anyway.