Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::convert::TryFrom;
- #[derive(Debug)]
- struct Src {
- fld1: Option<String>,
- }
- #[derive(Debug)]
- struct Dst {
- fld2: String,
- }
- #[derive(Debug)]
- pub struct ConvertError<'a> {
- msg: &'a str,
- }
- impl<'a> TryFrom<'a Src> for Dst {
- type Error = ConvertError<'a>;
- fn try_from(src: Src) -> Result<Self, Self::Error> {
- let s = src
- .fld1
- .ok_or(ConvertError {
- msg: "damn",
- })
- .and_then(|val| Ok(val))?;
- Ok(Dst { fld2: s })
- }
- }
- fn main() {
- let src = Src { fld1: None };
- let src1 = Src {
- fld1: Some(String::from("ciao")),
- };
- println!("{:?}", Dst::try_from(src));
- println!("{:?}", Dst::try_from(src1));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement