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§
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
impl<'de> Deserialize<'de> for &'de str
Source§impl<'de> Deserialize<'de> for Cow<'de, str>
impl<'de> Deserialize<'de> for Cow<'de, str>
Source§impl<'de> Deserialize<'de> for bool
impl<'de> Deserialize<'de> for bool
Source§impl<'de> Deserialize<'de> for f32
impl<'de> Deserialize<'de> for f32
Source§impl<'de> Deserialize<'de> for f64
impl<'de> Deserialize<'de> for f64
Source§impl<'de> Deserialize<'de> for i8
impl<'de> Deserialize<'de> for i8
Source§impl<'de> Deserialize<'de> for i16
impl<'de> Deserialize<'de> for i16
Source§impl<'de> Deserialize<'de> for i32
impl<'de> Deserialize<'de> for i32
Source§impl<'de> Deserialize<'de> for i64
impl<'de> Deserialize<'de> for i64
Source§impl<'de> Deserialize<'de> for isize
impl<'de> Deserialize<'de> for isize
Source§impl<'de> Deserialize<'de> for u8
impl<'de> Deserialize<'de> for u8
Source§impl<'de> Deserialize<'de> for u16
impl<'de> Deserialize<'de> for u16
Source§impl<'de> Deserialize<'de> for u32
impl<'de> Deserialize<'de> for u32
Source§impl<'de> Deserialize<'de> for u64
impl<'de> Deserialize<'de> for u64
Source§impl<'de> Deserialize<'de> for usize
impl<'de> Deserialize<'de> for usize
Source§impl<'de> Deserialize<'de> for Box<str>
impl<'de> Deserialize<'de> for Box<str>
Source§impl<'de> Deserialize<'de> for String
impl<'de> Deserialize<'de> for String
Source§impl<'de, T> Deserialize<'de> for Vec<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Vec<T>where
T: Deserialize<'de>,
Source§impl<'de, T: Deserialize<'de>> Deserialize<'de> for Box<[T]>
impl<'de, T: Deserialize<'de>> Deserialize<'de> for Box<[T]>
Source§impl<'de, T: Deserialize<'de>> Deserialize<'de> for Box<T>
impl<'de, T: Deserialize<'de>> Deserialize<'de> for Box<T>
Source§impl<'de, T: Deserialize<'de>, const N: usize> Deserialize<'de> for [T; N]
impl<'de, T: Deserialize<'de>, const N: usize> Deserialize<'de> for [T; N]
Implementors§
impl<'de, T> Deserialize<'de> for Spanned<T>where
T: Deserialize<'de>,
Available on crate feature
deserialization only.