Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.62 KB | None | 0 0
  1. #[macro_use]
  2. extern crate serde_derive;
  3. extern crate serde;
  4.  
  5. use std::str::FromStr;
  6. use std::fmt::Debug;
  7. use std::convert::From;
  8. use serde::{Deserialize, Deserializer};
  9. use serde::de::Error;
  10.  
  11. fn parse1<'de, D,T,C>(deserializer: D, mut converter: C) -> Result<C::Output, D::Error>
  12. where
  13. D: Deserializer<'de>,
  14. T: FromStr,
  15. C: Converter<T>,
  16. {
  17. let s: String = Deserialize::deserialize(deserializer)?;
  18. let s = s.split_whitespace()
  19. .filter_map(|s| s.parse::<T>().ok());
  20. Ok(converter.process(s))
  21. }
  22.  
  23. trait Converter<T> {
  24. type Output;
  25. fn process<I: Iterator<Item = T>>(&mut self, it: I) -> Self::Output;
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement