(no title)
shaoner | 4 years ago
Taking the article example, I ended up doing this:
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
pub enum MyError {
MyErr1,
MyErr2,
MyErr3,
}
fn read_number_from_file(filename: &str) -> Result<u64, MyError> {
let mut file = File::open(filename).or(Err(MyError::MyErr1))?; // Error!
let mut buffer = String::new();
file.read_to_string(&mut buffer).or(Err(MyError::MyErr2))?; // Error
let parsed: u64 = buffer.trim().parse().or(Err(MyError::MyErr3))?; // Error
Ok(parsed)
}
As I'm a beginner, I would love to hear some thoughts on this
sfvisser|4 years ago
onei|4 years ago
And as others noted, .map_err(...) is slightly better than .or(...) for wrapping errors.
loeg|4 years ago
hota_mazi|4 years ago