pub struct ParamsSequence<'a>(/* private fields */);Expand description
An Iterator-like parser for a sequence of Params.
This will parse the params one at a time, and allows for graceful handling of optional
parameters at the tail; other use cases are likely better served by Params::parse. The
reason this is not an actual Iterator is that params parsing (often) yields values of
different types.
Regards empty array [] as no parameters provided.
Implementations§
Source§impl<'a> ParamsSequence<'a>
impl<'a> ParamsSequence<'a>
Sourcepub fn next<T>(&mut self) -> Result<T, ErrorObjectOwned>where
T: Deserialize<'a>,
pub fn next<T>(&mut self) -> Result<T, ErrorObjectOwned>where
T: Deserialize<'a>,
Parse the next parameter to type T
let params = Params::new(Some(r#"[true, 10, "foo"]"#));
let mut seq = params.sequence();
let a: bool = seq.next().unwrap();
let b: i32 = seq.next().unwrap();
let c: &str = seq.next().unwrap();
assert_eq!(a, true);
assert_eq!(b, 10);
assert_eq!(c, "foo");Sourcepub fn optional_next<T>(&mut self) -> Result<Option<T>, ErrorObjectOwned>where
T: Deserialize<'a>,
pub fn optional_next<T>(&mut self) -> Result<Option<T>, ErrorObjectOwned>where
T: Deserialize<'a>,
Parse the next optional parameter to type Option<T>.
The result will be None for null, and for missing values in the supplied JSON array.
let params = Params::new(Some(r#"[1, 2, null]"#));
let mut seq = params.sequence();
let params: [Option<u32>; 4] = [
seq.optional_next().unwrap(),
seq.optional_next().unwrap(),
seq.optional_next().unwrap(),
seq.optional_next().unwrap(),
];
assert_eq!(params, [Some(1), Some(2), None, None]);Trait Implementations§
Source§impl<'a> Clone for ParamsSequence<'a>
impl<'a> Clone for ParamsSequence<'a>
impl<'a> Copy for ParamsSequence<'a>
Auto Trait Implementations§
impl<'a> Freeze for ParamsSequence<'a>
impl<'a> RefUnwindSafe for ParamsSequence<'a>
impl<'a> Send for ParamsSequence<'a>
impl<'a> Sync for ParamsSequence<'a>
impl<'a> Unpin for ParamsSequence<'a>
impl<'a> UnsafeUnpin for ParamsSequence<'a>
impl<'a> UnwindSafe for ParamsSequence<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes