diff options
author | Nadrieril | 2019-05-06 23:21:19 +0200 |
---|---|---|
committer | Nadrieril | 2019-05-06 23:21:19 +0200 |
commit | 5b91eaa9d6b70a2ac72fe19f2d21871c8d94b017 (patch) | |
tree | 9ab6c6025d8f994c1ca10db1c4b8ea7d39087290 /dhall/src/traits/deserialize.rs | |
parent | 60129b7d1c0ea8bdf2ec666fa51957e97465e88f (diff) |
Move api-related modules into an api module
Diffstat (limited to 'dhall/src/traits/deserialize.rs')
-rw-r--r-- | dhall/src/traits/deserialize.rs | 53 |
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()) - } -} |