1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- use sbi_spec::binary::{Error, SbiRet};
- pub enum MyError {
-
- Standard(sbi_spec::binary::Error),
-
- MyErrorCode1,
-
- MyErrorCode2,
- }
- const MY_ERROR_CODE_1: usize = 1001;
- const MY_ERROR_CODE_2: usize = 1002;
- impl From<sbi_spec::binary::Error> for MyError {
- fn from(value: Error) -> Self {
- match value {
-
- Error::Custom(MY_ERROR_CODE_1) => MyError::MyErrorCode1,
- Error::Custom(MY_ERROR_CODE_2) => MyError::MyErrorCode2,
-
- _ => MyError::Standard(value),
- }
- }
- }
- fn main() {
-
- let mut ret = SbiRet::success(0);
-
- ret.error = 1001;
-
- let ans = ret.map_err(MyError::from);
-
- match ans {
- Ok(_) => println!("Okay"),
-
- Err(MyError::MyErrorCode1) => println!("Custom error code 1"),
- Err(MyError::MyErrorCode2) => println!("Custom error code 2"),
-
- Err(MyError::Standard(err)) => println!("Standard error: {:?}", err),
- }
- }
|