pub trait SerializeStruct {
type Ok;
type Error: Error;
// Required methods
fn serialize_field<T>(
&mut self,
key: &'static str,
value: &T,
) -> Result<(), Self::Error>
where T: ?Sized + Serialize;
fn end(self) -> Result<Self::Ok, Self::Error>;
// Provided method
fn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error> { ... }
}
Expand description
Returned from Serializer::serialize_struct
.
§Example use
ⓘ
use serde::ser::{Serialize, SerializeStruct, Serializer};
struct Rgb {
r: u8,
g: u8,
b: u8,
}
impl Serialize for Rgb {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut rgb = serializer.serialize_struct("Rgb", 3)?;
rgb.serialize_field("r", &self.r)?;
rgb.serialize_field("g", &self.g)?;
rgb.serialize_field("b", &self.b)?;
rgb.end()
}
}
§Example implementation
The example data format presented on the website demonstrates an
implementation of SerializeStruct
for a basic JSON data format.
Required Associated Types§
Required Methods§
Sourcefn serialize_field<T>(
&mut self,
key: &'static str,
value: &T,
) -> Result<(), Self::Error>where
T: ?Sized + Serialize,
fn serialize_field<T>(
&mut self,
key: &'static str,
value: &T,
) -> Result<(), Self::Error>where
T: ?Sized + Serialize,
Serialize a struct field.
Provided Methods§
Sourcefn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error>
fn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error>
Indicate that a struct field has been skipped.
The default implementation does nothing.
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.