summaryrefslogtreecommitdiff
path: root/dhall/src/api/serde.rs
diff options
context:
space:
mode:
authorNadrieril2019-05-09 22:27:17 +0200
committerNadrieril2019-05-09 22:27:17 +0200
commit7ac061b5ddf15ffe3fc4f36b64138b7431429758 (patch)
treed77fd6945e67a317ba5a8b1dc3229984d65e4e3d /dhall/src/api/serde.rs
parentdae106b3de0888e8a704c0efa3f9d991590f7858 (diff)
Rewrite Deserialize trait around new Value and Type
Diffstat (limited to '')
-rw-r--r--dhall/src/api/serde.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/dhall/src/api/serde.rs b/dhall/src/api/serde.rs
index 93921ba..7be77c0 100644
--- a/dhall/src/api/serde.rs
+++ b/dhall/src/api/serde.rs
@@ -1,13 +1,14 @@
+use crate::api::de::{Deserialize, Value};
use crate::error::{Error, Result};
-use crate::phase::{Normalized, Type};
-use crate::traits::Deserialize;
-use dhall_syntax::*;
+use dhall_syntax::{SubExpr,ExprF, X};
use std::borrow::Cow;
-impl<'a, T: serde::Deserialize<'a>> Deserialize<'a> for T {
- fn from_str(s: &'a str, ty: Option<&Type>) -> Result<Self> {
- let expr = Normalized::from_str(s, ty)?;
- T::deserialize(Deserializer(Cow::Owned(expr.to_expr())))
+impl<'a, T> Deserialize for T
+where
+ T: serde::Deserialize<'a>,
+{
+ fn from_dhall(v: &Value) -> Result<Self> {
+ T::deserialize(Deserializer(Cow::Owned(v.to_expr())))
}
}