pub trait Serializer {
Show 23 methods
// Required method
fn emit_arguments(&mut self, key: Key, val: &Arguments<'_>) -> Result;
// Provided methods
fn emit_usize(&mut self, key: Key, val: usize) -> Result { ... }
fn emit_isize(&mut self, key: Key, val: isize) -> Result { ... }
fn emit_bool(&mut self, key: Key, val: bool) -> Result { ... }
fn emit_char(&mut self, key: Key, val: char) -> Result { ... }
fn emit_u8(&mut self, key: Key, val: u8) -> Result { ... }
fn emit_i8(&mut self, key: Key, val: i8) -> Result { ... }
fn emit_u16(&mut self, key: Key, val: u16) -> Result { ... }
fn emit_i16(&mut self, key: Key, val: i16) -> Result { ... }
fn emit_u32(&mut self, key: Key, val: u32) -> Result { ... }
fn emit_i32(&mut self, key: Key, val: i32) -> Result { ... }
fn emit_f32(&mut self, key: Key, val: f32) -> Result { ... }
fn emit_u64(&mut self, key: Key, val: u64) -> Result { ... }
fn emit_i64(&mut self, key: Key, val: i64) -> Result { ... }
fn emit_f64(&mut self, key: Key, val: f64) -> Result { ... }
fn emit_u128(&mut self, key: Key, val: u128) -> Result { ... }
fn emit_i128(&mut self, key: Key, val: i128) -> Result { ... }
fn emit_str(&mut self, key: Key, val: &str) -> Result { ... }
fn emit_unit(&mut self, key: Key) -> Result { ... }
fn emit_none(&mut self, key: Key) -> Result { ... }
fn emit_bytes(&mut self, key: Key, bytes: &[u8], kind: BytesKind) -> Result { ... }
fn emit_serde(&mut self, key: Key, value: &dyn SerdeValue) -> Result { ... }
fn emit_error(
&mut self,
key: Key,
error: &(dyn StdError + 'static),
) -> Result { ... }
}Expand description
Serializer
Drains using Format will internally use
types implementing this trait.
Required Methods§
Sourcefn emit_arguments(&mut self, key: Key, val: &Arguments<'_>) -> Result
fn emit_arguments(&mut self, key: Key, val: &Arguments<'_>) -> Result
Emit fmt::Arguments
This is the only method that has to implemented, but for performance and
to retain type information most serious Serializers will want to
implement all other methods as well.
Provided Methods§
Sourcefn emit_usize(&mut self, key: Key, val: usize) -> Result
fn emit_usize(&mut self, key: Key, val: usize) -> Result
Emit usize
Sourcefn emit_isize(&mut self, key: Key, val: isize) -> Result
fn emit_isize(&mut self, key: Key, val: isize) -> Result
Emit isize
Sourcefn emit_bytes(&mut self, key: Key, bytes: &[u8], kind: BytesKind) -> Result
fn emit_bytes(&mut self, key: Key, bytes: &[u8], kind: BytesKind) -> Result
Emit bytes
Note: this has literally bytes semantics, not array semantics. It is probably most appropriate to display it as hex which is also the default (space-separated).
Sourcefn emit_serde(&mut self, key: Key, value: &dyn SerdeValue) -> Result
fn emit_serde(&mut self, key: Key, value: &dyn SerdeValue) -> Result
Emit a value implementing
serde::Serialize
This is especially useful for composite values, eg. structs as Json values, or sequences.
To prevent pulling-in serde dependency, this is an extension behind a
serde feature flag.
The value needs to implement SerdeValue.
Sourcefn emit_error(&mut self, key: Key, error: &(dyn StdError + 'static)) -> Result
fn emit_error(&mut self, key: Key, error: &(dyn StdError + 'static)) -> Result
Emit a type implementing std::error::Error
Error values are a bit special as their Display implementation doesn’t show full
information about the type but must be retrieved using source(). This can be used
for formatting sources of errors differently.
The default implementation of this method formats the sources separated with : .
Serializers are encouraged to take advantage of the type information and format it as
appropriate.
This method is available if either the std feature is enabled,
or if core::error::Error is supported by the current rust version (1.81+)