From 7ac061b5ddf15ffe3fc4f36b64138b7431429758 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Thu, 9 May 2019 22:27:17 +0200 Subject: Rewrite Deserialize trait around new Value and Type --- dhall/src/api/traits/deserialize.rs | 53 ------------------------------------- dhall/src/api/traits/mod.rs | 2 -- 2 files changed, 55 deletions(-) delete mode 100644 dhall/src/api/traits/deserialize.rs delete mode 100644 dhall/src/api/traits/mod.rs (limited to 'dhall/src/api/traits') diff --git a/dhall/src/api/traits/deserialize.rs b/dhall/src/api/traits/deserialize.rs deleted file mode 100644 index 9673cf9..0000000 --- a/dhall/src/api/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; -} - -impl<'de> Deserialize<'de> for Parsed { - /// Simply parses the provided string. Ignores the - /// provided type. - fn from_str(s: &'de str, _: Option<&Type>) -> Result { - 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 { - 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 { - 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 { - Ok(Typed::from_str(s, ty)?.normalize()) - } -} - -impl<'de> Deserialize<'de> for Type { - fn from_str(s: &'de str, ty: Option<&Type>) -> Result { - Ok(Normalized::from_str(s, ty)?.to_type()) - } -} diff --git a/dhall/src/api/traits/mod.rs b/dhall/src/api/traits/mod.rs deleted file mode 100644 index 3fd21e4..0000000 --- a/dhall/src/api/traits/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod deserialize; -pub use deserialize::Deserialize; -- cgit v1.2.3