Add support for option parameters
This commit is contained in:
parent
042a5eb077
commit
f639279e3e
@ -158,13 +158,17 @@ impl<'key, 'target, Target> Serializer
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_none(&mut self) -> Result<(), Error> {
|
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
|
where T: Serialize
|
||||||
{
|
{
|
||||||
Err(Error::unsupported_value())
|
value.serialize(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_seq(&mut self, _len: Option<usize>) -> Result<(), Error> {
|
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