Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[macro_use]
- extern crate serde_derive;
- extern crate serde;
- use std::str::FromStr;
- use std::fmt::Debug;
- use std::convert::From;
- use serde::{Deserialize, Deserializer};
- use serde::de::Error;
- fn parse1<'de, D,T,C>(deserializer: D, mut converter: C) -> Result<C::Output, D::Error>
- where
- D: Deserializer<'de>,
- T: FromStr,
- C: Converter<T>,
- {
- let s: String = Deserialize::deserialize(deserializer)?;
- let s = s.split_whitespace()
- .filter_map(|s| s.parse::<T>().ok());
- Ok(converter.process(s))
- }
- trait Converter<T> {
- type Output;
- fn process<I: Iterator<Item = T>>(&mut self, it: I) -> Self::Output;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement