diff options
author | Nadrieril | 2020-03-22 21:20:58 +0000 |
---|---|---|
committer | Nadrieril | 2020-03-31 21:45:31 +0100 |
commit | 1a98b506055779e1a60558d9c5a56b071b3d61a0 (patch) | |
tree | 1ec11648ed9e3c503c6f4f06307c3541af648a23 /serde_dhall/src/serde.rs | |
parent | 196491a37a9ab2869ab6d76e1417a85a9e033dd4 (diff) |
Reorganize API and internals of serde_dhall a bit
Diffstat (limited to '')
-rw-r--r-- | serde_dhall/src/deserialize.rs (renamed from serde_dhall/src/serde.rs) | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/serde_dhall/src/serde.rs b/serde_dhall/src/deserialize.rs index 717450a..75a08a9 100644 --- a/serde_dhall/src/serde.rs +++ b/serde_dhall/src/deserialize.rs @@ -1,15 +1,28 @@ -use std::borrow::Cow; - use serde::de::value::{ MapAccessDeserializer, MapDeserializer, SeqDeserializer, }; +use std::borrow::Cow; use dhall::syntax::NumKind; use crate::simple::{ValKind, Value as SimpleValue}; -use crate::{Deserialize, Error, Result, Value}; +use crate::{Error, Result, Value}; + +pub trait Sealed {} + +/// A data structure that can be deserialized from a Dhall expression +/// +/// This is automatically implemented for any type that [serde][serde] +/// can deserialize. +/// +/// This trait cannot be implemented manually. +pub trait Deserialize: Sealed + Sized { + #[doc(hidden)] + /// See [serde_dhall::from_str][crate::from_str] + fn from_dhall(v: &Value) -> Result<Self>; +} -impl<'a, T> crate::sealed::Sealed for T where T: serde::Deserialize<'a> {} +impl<'a, T> Sealed for T where T: serde::Deserialize<'a> {} struct Deserializer<'a>(Cow<'a, SimpleValue>); |