| Crates.io | xcept |
| lib.rs | xcept |
| version | 0.0.1 |
| created_at | 2022-04-09 19:02:07.150154+00 |
| updated_at | 2022-04-09 19:02:07.150154+00 |
| description | Handle errors more like exceptions |
| homepage | |
| repository | https://github.com/AndWass/xcept |
| max_upload_size | |
| id | 564839 |
| size | 37,848 |
A very early Rust proof of concept inspired by boost.LEAF.
#[derive(Debug)]
struct CustomError(i32);
fn hello_world(x: i32) -> xcept::Result<&'static str> {
// This function reports two completely different error types, apart from the value type
if x % 2 == 0 {
"Even".into()
} else if x == 1 {
xcept::Result::new_error(CustomError(x))
}
else {
xcept::Result::new_error(x)
}
}
fn custom_error_handler(err: CustomError) -> xcept::Result<&'static str> {
println!("{err:?}");
"One".into()
}
fn error_handler(x: i32) -> xcept::Result<&'static str> {
println!("x: {x}");
"Odd".into()
}
fn main() {
let y = xcept::try_or_handle_one(|| hello_world(0), error_handler);
println!("{}", y.unwrap());
let y = xcept::try_or_handle_one(|| hello_world(1), custom_error_handler);
println!("{}", y.unwrap());
let y = xcept::try_or_handle_one(|| hello_world(3), error_handler);
println!("{}", y.unwrap());
}