# Struct serde::ser::Impossible

source · [−]

    pub struct Impossible<Ok, Error> { /* private fields */ }

Expand description

Helper type for implementing a `Serializer` that does not support serializing one of the compound types.

This type cannot be instantiated, but implements every one of the traits corresponding to the `Serializer` compound types: `SerializeSeq`, `SerializeTuple`, `SerializeTupleStruct`, `SerializeTupleVariant`, `SerializeMap`, `SerializeStruct`, and `SerializeStructVariant`.

ⓘ

    impl Serializer for MySerializer {
        type Ok = ();
        type Error = Error;

        type SerializeSeq = Impossible<(), Error>;
        /* other associated types */

        /// This data format does not support serializing sequences.
        fn serialize_seq(self,
                         len: Option<usize>)
                         -> Result<Self::SerializeSeq, Error> {
            // Given Impossible cannot be instantiated, the only
            // thing we can do here is to return an error.
            Err(...)
        }

        /* other Serializer methods */
    }

## Trait Implementations

source

### impl<Ok, Error> SerializeMap for Impossible<Ok, Error> where
Error: Error,

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

#### fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<(), Error> where
T: Serialize,

Serialize a map key. Read more

source

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

Serialize a map value. Read more

source

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

Finish serializing a map.

source

#### fn serialize_entry<K: ?Sized, V: ?Sized>(
&mut self,
key: &K,
value: &V
) -> Result<(), Self::Error> where
K: Serialize,
V: Serialize,

Serialize a map entry consisting of a key and a value. Read more

source

### impl<Ok, Error> SerializeSeq for Impossible<Ok, Error> where
Error: Error,

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

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

Serialize a sequence element.

source

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

Finish serializing a sequence.

source

### impl<Ok, Error> SerializeStruct for Impossible<Ok, Error> where
Error: Error,

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

#### fn serialize_field<T: ?Sized>(
&mut self,
key: &'static str,
value: &T
) -> Result<(), Error> where
T: Serialize,

Serialize a struct field.

source

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

Finish serializing a struct.

source

#### fn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error>

Indicate that a struct field has been skipped.

source

### impl<Ok, Error> SerializeStructVariant for Impossible<Ok, Error> where
Error: Error,

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

#### fn serialize_field<T: ?Sized>(
&mut self,
key: &'static str,
value: &T
) -> Result<(), Error> where
T: Serialize,

Serialize a struct variant field.

source

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

Finish serializing a struct variant.

source

#### fn skip_field(&mut self, key: &'static str) -> Result<(), Self::Error>

Indicate that a struct variant field has been skipped.

source

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

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

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

Serialize a tuple element.

source

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

Finish serializing a tuple.

source

### impl<Ok, Error> SerializeTupleStruct for Impossible<Ok, Error> where
Error: Error,

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

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

Serialize a tuple struct field.

source

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

Finish serializing a tuple struct.

source

### impl<Ok, Error> SerializeTupleVariant for Impossible<Ok, Error> where
Error: Error,

#### type Ok = Ok

Must match the `Ok` type of our `Serializer`.

#### type Error = Error

Must match the `Error` type of our `Serializer`.

source

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

Serialize a tuple variant field.

source

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

Finish serializing a tuple variant.

## Auto Trait Implementations

### impl<Ok, Error> RefUnwindSafe for Impossible<Ok, Error> where
Error: RefUnwindSafe,
Ok: RefUnwindSafe,

### impl<Ok, Error> Send for Impossible<Ok, Error> where
Error: Send,
Ok: Send,

### impl<Ok, Error> Sync for Impossible<Ok, Error> where
Error: Sync,
Ok: Sync,

### impl<Ok, Error> Unpin for Impossible<Ok, Error> where
Error: Unpin,
Ok: Unpin,

### impl<Ok, Error> UnwindSafe for Impossible<Ok, Error> where
Error: UnwindSafe,
Ok: UnwindSafe,

## Blanket Implementations

source

### impl<T> Any for T where
T: 'static + ?Sized,

source

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more

source

### impl<T> Borrow<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

### impl<T> BorrowMut<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

const: unstable · source

#### fn from(t: T) -> T

Returns the argument unchanged.

source

### impl<T, U> Into<U> for T where
U: From<T>,

const: unstable · source

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source

### impl<T, U> TryFrom<U> for T where
U: Into<T>,

#### type Error = Infallible

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.

source

### impl<T, U> TryInto<U> for T where
U: TryFrom<T>,

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.