Trait edn_rs::Deserialize

source ·
pub trait Deserialize: Sized {
    // Required method
    fn deserialize(edn: &Edn) -> Result<Self, Error>;
}
Expand description

public trait to be used to Deserialize structs.

§Errors

Error will be like EdnError::Deserialize("couldn't convert <value> into <type>")

use crate::edn_rs::{Edn, EdnError, Deserialize};

#[derive(Debug, PartialEq)]
struct Person {
    name: String,
    age: u64,
}

impl Deserialize for Person {
    fn deserialize(edn: &Edn) -> Result<Self, EdnError> {
        Ok(Self {
            name: edn_rs::from_edn(&edn[":name"])?,
            age: edn_rs::from_edn(&edn[":age"])?,
        })
    }
}

let edn_str = "{:name \"rose\" :age 66 }";
let person: Person = edn_rs::from_str(edn_str).unwrap();

assert_eq!(
    person,
    Person {
        name: "rose".to_string(),
        age: 66,
    }
);

println!("{:?}", person);
// Person { name: "rose", age: 66 }

let bad_edn_str = "{:name \"rose\" :age \"some text\" }";
let person: Result<Person, EdnError> = edn_rs::from_str(bad_edn_str);

assert_eq!(
    person,
    Err(EdnError::Deserialize(
        "couldn't convert `\"some text\"` into `uint`".to_string()
    ))
);

Required Methods§

source

fn deserialize(edn: &Edn) -> Result<Self, Error>

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Deserialize for bool

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for char

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for f64

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for i8

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for i16

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for i32

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for i64

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for isize

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for u8

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for u16

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for u32

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for u64

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for ()

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for usize

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for String

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl Deserialize for OrderedFloat<f64>

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl<T> Deserialize for Option<T>
where T: Deserialize,

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl<T> Deserialize for BTreeMap<String, T>
where T: Deserialize,

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl<T> Deserialize for BTreeSet<T>
where T: Eq + Hash + Ord + Deserialize,

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

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

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl<T, H> Deserialize for HashMap<String, T, H>

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

source§

impl<T, H> Deserialize for HashSet<T, H>
where T: Eq + Hash + Deserialize, H: BuildHasher + Default,

source§

fn deserialize(edn: &Edn) -> Result<Self, Error>

Implementors§