Skip to main content

Deserialize

Trait Deserialize 

Source
pub trait Deserialize<'de>: Sized {
    // Required method
    fn deserialize(
        ctx: &mut Context<'de>,
        item: &Item<'de>,
    ) -> Result<Self, Failed>;
}
Expand description

Trait for types that can be deserialized from a TOML Item.

Implement this on your own types to enable extraction via TableHelper::required and TableHelper::optional. Built-in implementations are provided for primitive types, String, Vec<T>, Box<T>, Option<T> (via optional), and more.

§Examples

use toml_spanner::{Item, Context, Deserialize, Failed, TableHelper};

struct Point {
    x: f64,
    y: f64,
}

impl<'de> Deserialize<'de> for Point {
    fn deserialize(ctx: &mut Context<'de>, value: &Item<'de>) -> Result<Self, Failed> {
        let mut th = value.table_helper(ctx)?;
        let x = th.required("x")?;
        let y = th.required("y")?;
        th.expect_empty()?;
        Ok(Point { x, y })
    }
}

Required Methods§

Source

fn deserialize(ctx: &mut Context<'de>, item: &Item<'de>) -> Result<Self, Failed>

Attempts to produce Self from a TOML Item.

On failure, records one or more errors in ctx and returns Err(Failed).

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<'de> Deserialize<'de> for &'de str

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for Cow<'de, str>

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for bool

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for f32

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for f64

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for i8

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for i16

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for i32

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for i64

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for isize

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for u8

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for u16

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for u32

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for u64

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for usize

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for Box<str>

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de> Deserialize<'de> for String

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de, T> Deserialize<'de> for Vec<T>
where T: Deserialize<'de>,

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de, T: Deserialize<'de>> Deserialize<'de> for Box<[T]>

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de, T: Deserialize<'de>> Deserialize<'de> for Box<T>

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Source§

impl<'de, T: Deserialize<'de>, const N: usize> Deserialize<'de> for [T; N]

Source§

fn deserialize( ctx: &mut Context<'de>, value: &Item<'de>, ) -> Result<Self, Failed>

Implementors§

Source§

impl<'de, T> Deserialize<'de> for Spanned<T>
where T: Deserialize<'de>,

Available on crate feature deserialization only.