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 Serializer
s 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+)