summaryrefslogtreecommitdiff
path: root/serde_dhall/src/lib.rs
diff options
context:
space:
mode:
authorNadrieril Feneanar2019-12-20 19:48:58 +0000
committerGitHub2019-12-20 19:48:58 +0000
commitce428c5512314c524535794bd89f95043fe7c221 (patch)
treec542ad7bfce433a4446bf50794e934de74aadd06 /serde_dhall/src/lib.rs
parentde0dd59204e979e29445d634a0739394110261ef (diff)
parent6d2c56cc13303ddea6b7f46d5d34659c6c558d19 (diff)
Merge pull request #119 from Nadrieril/seal-trait
Seal `Deserialize` trait
Diffstat (limited to '')
-rw-r--r--serde_dhall/src/lib.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/serde_dhall/src/lib.rs b/serde_dhall/src/lib.rs
index 2863788..d8a94d1 100644
--- a/serde_dhall/src/lib.rs
+++ b/serde_dhall/src/lib.rs
@@ -179,6 +179,8 @@ pub mod value {
}
}
+ impl super::de::sealed::Sealed for Value {}
+
impl super::de::Deserialize for Value {
fn from_dhall(v: &Value) -> Result<Self> {
Ok(v.clone())
@@ -225,14 +227,17 @@ pub mod de {
}
}
+ pub(crate) mod sealed {
+ pub trait Sealed {}
+ }
+
/// 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.
- // TODO: seal trait
- pub trait Deserialize: Sized {
+ pub trait Deserialize: sealed::Sealed + Sized {
/// See [serde_dhall::from_str][crate::from_str]
fn from_dhall(v: &Value) -> Result<Self>;
}