Used for converting an Result<Option, E> into an Option<Result<R, E>> and back.
let re = try!(regex::Regex::new(...));
let captures = re.captures().unwrap()
let parse_result = try!(captures.name("group").map(|captured| captured.parse()).flip())| pub trait FlipResultOption<R, E> { | |
| fn flip(self) -> Result<Option<R>, E>; | |
| } | |
| impl <R, E> FlipResultOption<R, E> for Option<Result<R, E>> { | |
| fn flip(self) -> Result<Option<R>, E> { | |
| match self { | |
| Some(Ok(r)) => Ok(Some(r)), | |
| Some(Err(e)) => Err(e), | |
| None => Ok(None) | |
| } | |
| } | |
| } | |
| pub trait FlipOptionResult<R, E> { | |
| fn flip(self) -> Option<Result<R, E>>; | |
| } | |
| impl <R, E> FlipOptionResult<R, E> for Result<Option<R>, E> { | |
| fn flip(self) -> Option<Result<R, E>> { | |
| match self { | |
| Ok(Some(v)) => Some(Ok(v)), | |
| Ok(None) => None, | |
| Err(e) => Some(Err(e)) | |
| } | |
| } | |
| } |