Add support for option parameters
Merge #4 a=@mre r=@nox ________________________________________________________________________
This commit is contained in:
commit
db248d7ea9
@ -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
27
tests/test_serialize.rs
Normal 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()));
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user