|
|
|
|
|
by shaoner
1710 days ago
|
|
I faced the same kind of issue lately and thought that implementing a From trait for each type of error was kind of annoying. 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 |
|