summaryrefslogtreecommitdiff
path: root/src/ser/key.rs
diff options
context:
space:
mode:
authorSam Scott <sam.scott89@gmail.com>2017-02-15 17:43:33 +0000
committerSam Scott <sam.scott89@gmail.com>2017-02-15 17:43:50 +0000
commit4a6b46f9222cad61ceb8e9246b4cc33eb4f61f57 (patch)
tree735a7cc371bcf6025eaecfb1acf8dec317d0e928 /src/ser/key.rs
parentc0457909e41735b17b66e11a1d2cf1660f6b3c6d (diff)
Some _very_ hacky code to get nested url_encoded params working.
Diffstat (limited to 'src/ser/key.rs')
-rw-r--r--src/ser/key.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/ser/key.rs b/src/ser/key.rs
index 6cbbff4..a84f311 100644
--- a/src/ser/key.rs
+++ b/src/ser/key.rs
@@ -1,4 +1,5 @@
-use ser::Error;
+use ser::{Error};
+use serde::ser::{SerializeStruct};
use ser::part::Sink;
use serde::Serialize;
use std::borrow::Cow;
@@ -44,7 +45,6 @@ impl<End, Ok> KeySink<End>
impl<End, Ok> Sink for KeySink<End>
where End: for<'key> FnOnce(Key<'key>) -> Result<Ok, Error>
{
- type Ok = Ok;
fn serialize_static_str(self,
value: &'static str)
@@ -74,3 +74,23 @@ impl<End, Ok> Sink for KeySink<End>
Error::Custom("unsupported key".into())
}
}
+
+impl<End, Ok> SerializeStruct for KeySink<End>
+where End: for<'key> FnOnce(Key<'key>) -> Result<Ok, Error>
+{
+ type Ok = Ok;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized + Serialize>(&mut self,
+ _key: &'static str,
+ _value: &T)
+ -> Result<(), Error> {
+ Err(Error::top_level())
+ }
+
+ fn end(self) -> Result<Self::Ok, Error> {
+ Err(self.unsupported())
+ }
+}
+
+