mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-12 20:11:02 +00:00
Examples for the primitive serializer methods
This commit is contained in:
@@ -1,3 +1,27 @@
|
|||||||
|
#[doc(hidden)]
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! __private_serialize {
|
||||||
|
() => {
|
||||||
|
trait Serialize {
|
||||||
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
where
|
||||||
|
S: $crate::Serializer;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! __private_deserialize {
|
||||||
|
() => {
|
||||||
|
trait Deserialize<'de>: Sized {
|
||||||
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||||
|
where
|
||||||
|
D: $crate::Deserializer<'de>;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// Used only by Serde doc tests. Not public API.
|
/// Used only by Serde doc tests. Not public API.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
|
|||||||
@@ -346,6 +346,25 @@ pub trait Serializer: Sized {
|
|||||||
type SerializeStructVariant: SerializeStructVariant<Ok = Self::Ok, Error = Self::Error>;
|
type SerializeStructVariant: SerializeStructVariant<Ok = Self::Ok, Error = Self::Error>;
|
||||||
|
|
||||||
/// Serialize a `bool` value.
|
/// Serialize a `bool` value.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for bool {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_bool(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>;
|
fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize an `i8` value.
|
/// Serialize an `i8` value.
|
||||||
@@ -353,6 +372,25 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `i8` and `i64`, a
|
/// If the format does not differentiate between `i8` and `i64`, a
|
||||||
/// reasonable implementation would be to cast the value to `i64` and
|
/// reasonable implementation would be to cast the value to `i64` and
|
||||||
/// forward to `serialize_i64`.
|
/// forward to `serialize_i64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for i8 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_i8(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error>;
|
fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize an `i16` value.
|
/// Serialize an `i16` value.
|
||||||
@@ -360,6 +398,25 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `i16` and `i64`, a
|
/// If the format does not differentiate between `i16` and `i64`, a
|
||||||
/// reasonable implementation would be to cast the value to `i64` and
|
/// reasonable implementation would be to cast the value to `i64` and
|
||||||
/// forward to `serialize_i64`.
|
/// forward to `serialize_i64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for i16 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_i16(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error>;
|
fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize an `i32` value.
|
/// Serialize an `i32` value.
|
||||||
@@ -367,9 +424,47 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `i32` and `i64`, a
|
/// If the format does not differentiate between `i32` and `i64`, a
|
||||||
/// reasonable implementation would be to cast the value to `i64` and
|
/// reasonable implementation would be to cast the value to `i64` and
|
||||||
/// forward to `serialize_i64`.
|
/// forward to `serialize_i64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for i32 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_i32(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error>;
|
fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize an `i64` value.
|
/// Serialize an `i64` value.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for i64 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_i64(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error>;
|
fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a `u8` value.
|
/// Serialize a `u8` value.
|
||||||
@@ -377,6 +472,25 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `u8` and `u64`, a
|
/// If the format does not differentiate between `u8` and `u64`, a
|
||||||
/// reasonable implementation would be to cast the value to `u64` and
|
/// reasonable implementation would be to cast the value to `u64` and
|
||||||
/// forward to `serialize_u64`.
|
/// forward to `serialize_u64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for u8 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_u8(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error>;
|
fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a `u16` value.
|
/// Serialize a `u16` value.
|
||||||
@@ -384,6 +498,25 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `u16` and `u64`, a
|
/// If the format does not differentiate between `u16` and `u64`, a
|
||||||
/// reasonable implementation would be to cast the value to `u64` and
|
/// reasonable implementation would be to cast the value to `u64` and
|
||||||
/// forward to `serialize_u64`.
|
/// forward to `serialize_u64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for u16 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_u16(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error>;
|
fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a `u32` value.
|
/// Serialize a `u32` value.
|
||||||
@@ -391,9 +524,47 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `u32` and `u64`, a
|
/// If the format does not differentiate between `u32` and `u64`, a
|
||||||
/// reasonable implementation would be to cast the value to `u64` and
|
/// reasonable implementation would be to cast the value to `u64` and
|
||||||
/// forward to `serialize_u64`.
|
/// forward to `serialize_u64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for u32 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_u32(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error>;
|
fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a `u64` value.
|
/// Serialize a `u64` value.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for u64 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_u64(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error>;
|
fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize an `f32` value.
|
/// Serialize an `f32` value.
|
||||||
@@ -401,18 +572,94 @@ pub trait Serializer: Sized {
|
|||||||
/// If the format does not differentiate between `f32` and `f64`, a
|
/// If the format does not differentiate between `f32` and `f64`, a
|
||||||
/// reasonable implementation would be to cast the value to `f64` and
|
/// reasonable implementation would be to cast the value to `f64` and
|
||||||
/// forward to `serialize_f64`.
|
/// forward to `serialize_f64`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for f32 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_f32(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error>;
|
fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize an `f64` value.
|
/// Serialize an `f64` value.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for f64 {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_f64(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error>;
|
fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a character.
|
/// Serialize a character.
|
||||||
///
|
///
|
||||||
/// If the format does not support characters, it is reasonable to serialize
|
/// If the format does not support characters, it is reasonable to serialize
|
||||||
/// it as a single element `str` or a `u32`.
|
/// it as a single element `str` or a `u32`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for char {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_char(*self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>;
|
fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a `&str`.
|
/// Serialize a `&str`.
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # #[macro_use]
|
||||||
|
/// # extern crate serde;
|
||||||
|
/// #
|
||||||
|
/// # use serde::Serializer;
|
||||||
|
/// #
|
||||||
|
/// # __private_serialize!();
|
||||||
|
/// #
|
||||||
|
/// impl Serialize for str {
|
||||||
|
/// fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
/// where S: Serializer
|
||||||
|
/// {
|
||||||
|
/// serializer.serialize_str(self)
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// #
|
||||||
|
/// # fn main() {}
|
||||||
|
/// ```
|
||||||
fn serialize_str(self, value: &str) -> Result<Self::Ok, Self::Error>;
|
fn serialize_str(self, value: &str) -> Result<Self::Ok, Self::Error>;
|
||||||
|
|
||||||
/// Serialize a chunk of raw byte data.
|
/// Serialize a chunk of raw byte data.
|
||||||
|
|||||||
Reference in New Issue
Block a user