diff options
Diffstat (limited to 'src/ser/key.rs')
-rw-r--r-- | src/ser/key.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/ser/key.rs b/src/ser/key.rs index a84f311..eb7ffae 100644 --- a/src/ser/key.rs +++ b/src/ser/key.rs @@ -1,5 +1,5 @@ use ser::{Error}; -use serde::ser::{SerializeStruct}; +use serde::ser::{SerializeSeq, SerializeStruct}; use ser::part::Sink; use serde::Serialize; use std::borrow::Cow; @@ -42,7 +42,7 @@ impl<End, Ok> KeySink<End> } } -impl<End, Ok> Sink for KeySink<End> +impl<End, Ok> Sink<Ok, Error> for KeySink<End> where End: for<'key> FnOnce(Key<'key>) -> Result<Ok, Error> { @@ -93,4 +93,22 @@ where End: for<'key> FnOnce(Key<'key>) -> Result<Ok, Error> } } +impl<End, Ok> SerializeSeq for KeySink<End> +where End: for<'key> FnOnce(Key<'key>) -> Result<Ok, Error> +{ + type Ok = Ok; + type Error = Error; + + fn serialize_element<T: ?Sized + Serialize>(&mut self, + _value: &T) + -> Result<(), Error> { + Err(Error::top_level()) + } + + fn end(self) -> Result<Self::Ok, Error> { + Err(self.unsupported()) + } +} + + |