summaryrefslogtreecommitdiff
path: root/dhall/src/traits/deserialize.rs
diff options
context:
space:
mode:
authorNadrieril2019-05-06 23:21:19 +0200
committerNadrieril2019-05-06 23:21:19 +0200
commit5b91eaa9d6b70a2ac72fe19f2d21871c8d94b017 (patch)
tree9ab6c6025d8f994c1ca10db1c4b8ea7d39087290 /dhall/src/traits/deserialize.rs
parent60129b7d1c0ea8bdf2ec666fa51957e97465e88f (diff)
Move api-related modules into an api module
Diffstat (limited to 'dhall/src/traits/deserialize.rs')
-rw-r--r--dhall/src/traits/deserialize.rs53
1 files changed, 0 insertions, 53 deletions
diff --git a/dhall/src/traits/deserialize.rs b/dhall/src/traits/deserialize.rs
deleted file mode 100644
index 9673cf9..0000000
--- a/dhall/src/traits/deserialize.rs
+++ /dev/null
@@ -1,53 +0,0 @@
-use crate::error::*;
-use crate::phase::*;
-
-/// 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<'de>: Sized {
- /// See [dhall::de::from_str][crate::de::from_str]
- fn from_str(s: &'de str, ty: Option<&Type>) -> Result<Self>;
-}
-
-impl<'de> Deserialize<'de> for Parsed {
- /// Simply parses the provided string. Ignores the
- /// provided type.
- fn from_str(s: &'de str, _: Option<&Type>) -> Result<Self> {
- Ok(Parsed::parse_str(s)?)
- }
-}
-
-impl<'de> Deserialize<'de> for Resolved {
- /// Parses and resolves the provided string. Ignores the
- /// provided type.
- fn from_str(s: &'de str, ty: Option<&Type>) -> Result<Self> {
- Ok(Parsed::from_str(s, ty)?.resolve()?)
- }
-}
-
-impl<'de> Deserialize<'de> for Typed {
- /// Parses, resolves and typechecks the provided string.
- fn from_str(s: &'de str, ty: Option<&Type>) -> Result<Self> {
- let resolved = Resolved::from_str(s, ty)?;
- match ty {
- None => Ok(resolved.typecheck()?),
- Some(t) => Ok(resolved.typecheck_with(t)?),
- }
- }
-}
-
-impl<'de> Deserialize<'de> for Normalized {
- /// Parses, resolves, typechecks and normalizes the provided string.
- fn from_str(s: &'de str, ty: Option<&Type>) -> Result<Self> {
- Ok(Typed::from_str(s, ty)?.normalize())
- }
-}
-
-impl<'de> Deserialize<'de> for Type {
- fn from_str(s: &'de str, ty: Option<&Type>) -> Result<Self> {
- Ok(Normalized::from_str(s, ty)?.to_type())
- }
-}