Why do I need to import a trait to use the methods it defines for a type?
That’s simply the way it is. In Rust a trait must be in scope for you to be able to call its methods. As for why, the possibility of collisions is the reason why. All the formatting traits in std::fmt (Display, Debug, LowerHex, &c.) have the same method signature for fmt. For example; what would …