Trait Format
pub trait Format {
// Required method
fn format(&self, fmt: Formatter<'_>);
}
defmt
only.Expand description
Trait for types that can be formatted via defmt.
This trait is used by the {:?}
format specifier and can format a wide range of types.
User-defined types can #[derive(Format)]
to get an auto-generated implementation of this
trait.
Note: The implementation of #[derive(Format)]
assumes that no builtin types are shadowed
(for example by defining a struct u8;
). This allows it to represent them more compactly.
§Example
Usually, an implementation of this trait can be #[derive]
d automatically:
use defmt::Format;
#[derive(Format)]
struct Header {
source: u8,
destination: u8,
sequence: u16,
}
Manual implementations can make use of the write!
macro:
use defmt::{Format, Formatter, write};
struct Id(u32);
impl Format for Id {
fn format(&self, fmt: Formatter) {
// Format as hexadecimal.
write!(fmt, "Id({:x})", self.0);
}
}
Note Some implementations of standard types like Vec<T>
are hidden behind the alloc
feature flag.
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.