summaryrefslogtreecommitdiff
path: root/src/ser/key.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ser/key.rs')
-rw-r--r--src/ser/key.rs22
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())
+ }
+}
+
+