Add support for option parameters

Merge #4 a=@mre r=@nox
________________________________________________________________________
This commit is contained in:
aelita-mergebot 2016-09-19 02:09:39 -07:00 committed by GitHub
commit db248d7ea9
2 changed files with 34 additions and 3 deletions

View File

@ -158,13 +158,17 @@ impl<'key, 'target, Target> Serializer
}
fn serialize_none(&mut self) -> Result<(), Error> {
Err(Error::unsupported_value())
if let Some(_) = self.key.take() {
Ok(())
} else {
Err(Error::no_key())
}
}
fn serialize_some<T>(&mut self, _value: T) -> Result<(), Error>
fn serialize_some<T>(&mut self, value: T) -> Result<(), Error>
where T: Serialize
{
Err(Error::unsupported_value())
value.serialize(self)
}
fn serialize_seq(&mut self, _len: Option<usize>) -> Result<(), Error> {

27
tests/test_serialize.rs Normal file
View File

@ -0,0 +1,27 @@
extern crate serde_urlencoded;
#[test]
fn serialize_option_map_int() {
let params = &[
("first", Some(23)),
("middle", None),
("last", Some(42)),
];
assert_eq!(
serde_urlencoded::to_string(params),
Ok("first=23&last=42".to_owned()));
}
#[test]
fn serialize_option_map_string() {
let params = &[
("first", Some("hello")),
("middle", None),
("last", Some("world")),
];
assert_eq!(
serde_urlencoded::to_string(params),
Ok("first=hello&last=world".to_owned()));
}