Crate displaydoc[−][src]
This library provides a convenient derive macro for the standard library’s
core::fmt::Display
trait.
[dependencies]
displaydoc = "0.2"
Compiler support: requires rustc 1.31+
Example
use std::io; use displaydoc::Display; use thiserror::Error; #[derive(Display, Error, Debug)] pub enum DataStoreError { /// data store disconnected Disconnect(#[source] io::Error), /// the data for key `{0}` is not available Redaction(String), /// invalid header (expected {expected:?}, found {found:?}) InvalidHeader { expected: String, found: String, }, /// unknown data store error Unknown, }
Details
-
A
Display
impl is generated for your type if you provide doc comment messages on the struct or each variant of your enum, as shown above in the example.The messages support a shorthand for interpolating fields from the error.
/// {var}
⟶write!("{}", self.var)
/// {0}
⟶write!("{}", self.0)
/// {var:?}
⟶write!("{:?}", self.var)
/// {0:?}
⟶write!("{:?}", self.0)
FAQ
-
Is this crate
no_std
compatible?- Yes! This crate implements the
core::fmt::Display
trait not thestd::fmt::Display
trait so it should work instd
andno_std
environments. Just adddefault-features = false
.
- Yes! This crate implements the
-
Does this crate work with
Path
andPathBuf
via theDisplay
trait?- Yuuup. This crate uses @dtolnay’s autoref specialization technique to add a special trait for types to get the display impl, it then specializes for
Path
andPathBuf
and when either of these types are found it callsself.display()
to get astd::path::Display<'_>
type which can be used with the Display format specifier!
- Yuuup. This crate uses @dtolnay’s autoref specialization technique to add a special trait for types to get the display impl, it then specializes for
Derive Macros
Display | Derive macro for implementing |