summaryrefslogtreecommitdiff
path: root/dhall/src/api/serde.rs
diff options
context:
space:
mode:
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())))
}
}