Display
“Write to string” trait, prioritizing readability for an end user.
Derivable: ❌, without crates like derive_more.
When to implement: As-needed, for errors and other types that an end-user will see.
#![allow(unused)] fn main() { #[derive(Debug)] pub enum NetworkError { HttpCode(u16), WhaleBitTheUnderseaCable, } impl std::fmt::Display for NetworkError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { NetworkError::HttpCode(code) => write!(f, "HTTP Error code {code}"), NetworkError::WhaleBitTheUnderseaCable => { write!(f, "Whale attack detected – call Ishmael") } } } } impl std::error::Error for NetworkError {} }
- A trait similar to `Debug`, but with a focus on end-user readability.
-
Prerequisite for the
Errortrait.If implementing for an error type, focus on providing a descriptive error for users and programmers other than you.
-
Same security considerations as Debug, consider the ways that sensitive data could be exposed in UI or logs.
-
Types that implement
Displayautomatically haveToStringimplemented for them.