W3cubDocs

/Rust

Trait Display

pub trait Display {
    // Required method
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>;
}

Format trait for an empty format, {}.

Implementing this trait for a type will automatically implement the ToString trait for the type, allowing the usage of the .to_string() method. Prefer implementing the Display trait for a type, rather than ToString.

Display is similar to Debug, but Display is for user-facing output, and so cannot be derived.

For more information on formatters, see the module-level documentation.

Completeness and parseability

Display for a type might not necessarily be a lossless or complete representation of the type. It may omit internal state, precision, or other information the type does not consider important for user-facing output, as determined by the type. As such, the output of Display might not be possible to parse, and even if it is, the result of parsing might not exactly match the original value.

However, if a type has a lossless Display implementation whose output is meant to be conveniently machine-parseable and not just meant for human consumption, then the type may wish to accept the same format in FromStr, and document that usage. Having both Display and FromStr implementations where the result of Display cannot be parsed with FromStr may surprise users.

Internationalization

Because a type can only have one Display implementation, it is often preferable to only implement Display when there is a single most “obvious” way that values can be formatted as text. This could mean formatting according to the “invariant” culture and “undefined” locale, or it could mean that the type display is designed for a specific culture/locale, such as developer logs.

If not all values have a justifiably canonical textual format or if you want to support alternative formats not covered by the standard set of possible formatting traits, the most flexible approach is display adapters: methods like str::escape_default or Path::display which create a wrapper implementing Display to output the specific display format.

Examples

Implementing Display on a type:

use std::fmt;

struct Point {
    x: i32,
    y: i32,
}

impl fmt::Display for Point {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "({}, {})", self.x, self.y)
    }
}

let origin = Point { x: 0, y: 0 };

assert_eq!(format!("The origin is: {origin}"), "The origin is: (0, 0)");

Required Methods

1.0.0Source
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter.

Errors

This function should return Err if, and only if, the provided Formatter returns Err. String formatting is considered an infallible operation; this function only returns a Result because writing to the underlying stream might fail and it must provide a way to propagate the fact that an error has occurred back up the stack.

Examples
use std::fmt;

struct Position {
    longitude: f32,
    latitude: f32,
}

impl fmt::Display for Position {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "({}, {})", self.longitude, self.latitude)
    }
}

assert_eq!(
    "(1.987, 2.983)",
    format!("{}", Position { longitude: 1.987, latitude: 2.983, }),
);

Implementors

Source
impl Display for AsciiChar
1.34.0Source
impl Display for Infallible
1.0.0Source
impl Display for VarError
1.17.0Source
impl Display for FromBytesWithNulError
1.89.0Source
impl Display for std::fs::TryLockError
1.60.0Source
impl Display for ErrorKind
1.7.0Source
impl Display for IpAddr
1.0.0Source
impl Display for SocketAddr
1.86.0Source
impl Display for GetDisjointMutError
1.15.0Source
impl Display for RecvTimeoutError
1.0.0Source
impl Display for TryRecvError
1.0.0Source
impl Display for bool
1.0.0Source
impl Display for char
1.0.0Source
impl Display for f16
1.0.0Source
impl Display for f32
1.0.0Source
impl Display for f64
1.0.0Source
impl Display for i8
1.0.0Source
impl Display for i16
1.0.0Source
impl Display for i32
1.0.0Source
impl Display for i64
1.0.0Source
impl Display for i128
1.0.0Source
impl Display for isize
Source
impl Display for !
1.0.0Source
impl Display for str
1.0.0Source
impl Display for u8
1.0.0Source
impl Display for u16
1.0.0Source
impl Display for u32
1.0.0Source
impl Display for u64
1.0.0Source
impl Display for u128
1.0.0Source
impl Display for usize
1.26.0Source
impl Display for PanicInfo<'_>
1.81.0Source
impl Display for PanicMessage<'_>
Source
impl Display for AllocError
1.28.0Source
impl Display for LayoutError
1.35.0Source
impl Display for TryFromSliceError
1.39.0Source
impl Display for std::ascii::EscapeDefault
1.65.0Source
impl Display for Backtrace
Source
impl Display for ByteStr
Source
impl Display for ByteString
1.13.0Source
impl Display for BorrowError
1.13.0Source
impl Display for BorrowMutError
1.34.0Source
impl Display for CharTryFromError
1.9.0Source
impl Display for DecodeUtf16Error
1.20.0Source
impl Display for std::char::EscapeDebug
1.16.0Source
impl Display for std::char::EscapeDefault
1.16.0Source
impl Display for std::char::EscapeUnicode
1.20.0Source
impl Display for ParseCharError
1.16.0Source
impl Display for ToLowercase
1.16.0Source
impl Display for ToUppercase
1.59.0Source
impl Display for TryFromCharError
Source
impl Display for UnorderedKeyError
1.57.0Source
impl Display for TryReserveError
1.0.0Source
impl Display for JoinPathsError
1.87.0Source
impl Display for std::ffi::os_str::Display<'_>
1.69.0Source
impl Display for FromBytesUntilNulError
1.58.0Source
impl Display for FromVecWithNulError
1.7.0Source
impl Display for IntoStringError
1.0.0Source
impl Display for NulError
1.0.0Source
impl Display for std::io::Error
1.56.0Source
impl Display for WriterPanicked
1.4.0Source
impl Display for AddrParseError
1.0.0Source
impl Display for Ipv4Addr
1.0.0Source
impl Display for Ipv6AddrWrites an Ipv6Addr, conforming to the canonical style described by
RFC 5952.
1.0.0Source
impl Display for SocketAddrV4
1.0.0Source
impl Display for SocketAddrV6
1.0.0Source
impl Display for ParseFloatError
1.0.0Source
impl Display for ParseIntError
1.34.0Source
impl Display for TryFromIntError
1.63.0Source
impl Display for InvalidHandleErrorAvailable on Windows only.
1.63.0Source
impl Display for NullHandleErrorAvailable on Windows only.
1.26.0Source
impl Display for Location<'_>
1.26.0Source
impl Display for PanicHookInfo<'_>
1.0.0Source
impl Display for std::path::Display<'_>
Source
impl Display for NormalizeError
1.7.0Source
impl Display for StripPrefixError
1.0.0Source
impl Display for ExitStatus
Source
impl Display for ExitStatusError
1.0.0Source
impl Display for ParseBoolError
1.0.0Source
impl Display for Utf8Error
1.0.0Source
impl Display for FromUtf8Error
1.0.0Source
impl Display for FromUtf16Error
1.0.0Source
impl Display for String
1.0.0Source
impl Display for RecvError
Source
impl Display for WouldBlock
1.26.0Source
impl Display for AccessError
1.8.0Source
impl Display for SystemTimeError
1.66.0Source
impl Display for TryFromFloatSecsError
1.0.0Source
impl Display for Arguments<'_>
1.0.0Source
impl Display for std::fmt::Error
1.60.0Source
impl<'a> Display for EscapeAscii<'a>
1.34.0Source
impl<'a> Display for std::str::EscapeDebug<'a>
1.34.0Source
impl<'a> Display for std::str::EscapeDefault<'a>
1.34.0Source
impl<'a> Display for std::str::EscapeUnicode<'a>
Source
impl<'a, K, V, A> Display for std::collections::btree_map::OccupiedError<'a, K, V, A>where
    K: Debug + Ord,
    V: Debug,
    A: Allocator + Clone,
Source
impl<'a, K: Debug, V: Debug> Display for std::collections::hash_map::OccupiedError<'a, K, V>
1.0.0Source
impl<B> Display for Cow<'_, B>where
    B: Display + ToOwned + ?Sized,
    <B as ToOwned>::Owned: Display,
Source
impl<E> Display for Report<E>where
    E: Error,
1.93.0Source
impl<F> Display for FromFn<F>where
    F: Fn(&mut Formatter<'_>) -> Result<(), Error>,
1.33.0Source
impl<Ptr> Display for Pin<Ptr>where
    Ptr: Display,
1.0.0Source
impl<T> Display for std::sync::TryLockError<T>
Source
impl<T> Display for SendTimeoutError<T>
1.0.0Source
impl<T> Display for TrySendError<T>
1.0.0Source
impl<T> Display for &Twhere
    T: Display + ?Sized,
1.0.0Source
impl<T> Display for &mut Twhere
    T: Display + ?Sized,
Source
impl<T> Display for ThinBox<T>where
    T: Display + ?Sized,
1.20.0Source
impl<T> Display for Ref<'_, T>where
    T: Display + ?Sized,
1.20.0Source
impl<T> Display for RefMut<'_, T>where
    T: Display + ?Sized,
1.28.0Source
impl<T> Display for NonZero<T>where
    T: ZeroablePrimitive + Display,
1.74.0Source
impl<T> Display for Saturating<T>where
    T: Display,
1.10.0Source
impl<T> Display for Wrapping<T>where
    T: Display,
1.0.0Source
impl<T> Display for SendError<T>
1.0.0Source
impl<T> Display for PoisonError<T>
1.0.0Source
impl<T, A> Display for Box<T, A>where
    T: Display + ?Sized,
    A: Allocator,
1.0.0Source
impl<T, A> Display for Rc<T, A>where
    T: Display + ?Sized,
    A: Allocator,
Source
impl<T, A> Display for UniqueRc<T, A>where
    T: Display + ?Sized,
    A: Allocator,
1.0.0Source
impl<T, A> Display for Arc<T, A>where
    T: Display + ?Sized,
    A: Allocator,
Source
impl<T, A> Display for UniqueArc<T, A>where
    T: Display + ?Sized,
    A: Allocator,
Source
impl<T: Display + ?Sized> Display for ReentrantLockGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::nonpoison::MappedMutexGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::nonpoison::MappedRwLockReadGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::nonpoison::MappedRwLockWriteGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::nonpoison::MutexGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::nonpoison::RwLockReadGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::nonpoison::RwLockWriteGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::MappedMutexGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::MappedRwLockReadGuard<'_, T>
Source
impl<T: ?Sized + Display> Display for std::sync::MappedRwLockWriteGuard<'_, T>
1.20.0Source
impl<T: ?Sized + Display> Display for std::sync::MutexGuard<'_, T>
1.20.0Source
impl<T: ?Sized + Display> Display for std::sync::RwLockReadGuard<'_, T>
1.20.0Source
impl<T: ?Sized + Display> Display for std::sync::RwLockWriteGuard<'_, T>
1.0.0Source
impl<W> Display for IntoInnerError<W>

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/fmt/trait.Display.html