I read the std::fmt::Display doc here: Display in std::fmt - Rust
It says "Display is similar to Debug, but Display is for user-facing output, and so cannot be derived.
Who can help to explain me what's the exact meaning of "can't be derived" ?
Does that mean the fmt::Display impl of any struct in external crate the Display can't be used?
It means that there is no implementation for #[derive(Display)] in the standard library, see Rust Playground. Since it's user facing and output is dependant on context, a general implementation would not suffice.
There is one for Debug because it's meant to create a detailed programmer facing string of the implementing object. Which would be a (filtered) key-value dump in practise. Debug docs
I'm facing an odd issue which has fmt::Display works normal in local but works different if use it as extern crate, that's why I'm confusing about the 'derived` word in doc. the odd issue could be another topic.
You are only allowed to implement Display for types in the same crate. You can't add Display to a type from another crate. This is called "orphan rules" in Rust.