rustmax::serde::ser

Trait SerializeTuple

Source
pub trait SerializeTuple {
    type Ok;
    type Error: Error;

    // Required methods
    fn serialize_element<T>(&mut self, value: &T) -> Result<(), Self::Error>
       where T: Serialize + ?Sized;
    fn end(self) -> Result<Self::Ok, Self::Error>;
}
Expand description

Returned from Serializer::serialize_tuple.

§Example use

use serde::ser::{Serialize, SerializeTuple, Serializer};

impl<A, B, C> Serialize for (A, B, C)
where
    A: Serialize,
    B: Serialize,
    C: Serialize,
{
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let mut tup = serializer.serialize_tuple(3)?;
        tup.serialize_element(&self.0)?;
        tup.serialize_element(&self.1)?;
        tup.serialize_element(&self.2)?;
        tup.end()
    }
}
use serde::ser::{Serialize, SerializeTuple, Serializer};

impl<T> Serialize for [T; 16]
where
    T: Serialize,
{
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let mut seq = serializer.serialize_tuple(16)?;
        for element in self {
            seq.serialize_element(element)?;
        }
        seq.end()
    }
}

§Example implementation

The example data format presented on the website demonstrates an implementation of SerializeTuple for a basic JSON data format.

Required Associated Types§

Source

type Ok

Must match the Ok type of our Serializer.

Source

type Error: Error

Must match the Error type of our Serializer.

Required Methods§

Source

fn serialize_element<T>(&mut self, value: &T) -> Result<(), Self::Error>
where T: Serialize + ?Sized,

Serialize a tuple element.

Source

fn end(self) -> Result<Self::Ok, Self::Error>

Finish serializing a tuple.

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.

Implementations on Foreign Types§

Source§

impl<'input, 'output, Target> SerializeTuple for TupleSerializer<'input, 'output, Target>
where Target: 'output + Target,

Source§

type Ok = &'output mut Serializer<'input, Target>

Source§

type Error = Error

Source§

fn serialize_element<T>(&mut self, value: &T) -> Result<(), Error>
where T: Serialize + ?Sized,

Source§

fn end( self, ) -> Result<<TupleSerializer<'input, 'output, Target> as SerializeTuple>::Ok, Error>

Implementors§

Source§

impl<Ok, Error> SerializeTuple for Impossible<Ok, Error>
where Error: Error,

Source§

type Ok = Ok

Source§

type Error = Error