Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate failure;
- use failure::ResultExt;
- use std::fs::File;
- type FailResult<T> = Result<T, failure::Error>;
- fn opensome() -> FailResult<()> {
- File::open("/nonexisintg")?;
- Ok(())
- }
- fn try_open() -> FailResult<()> {
- println!("Trying");
- opensome().context("failed while trying")?;
- Ok(())
- }
- fn run() -> FailResult<()> {
- try_open()
- }
- fn main() {
- if let Err(e) = run() {
- eprintln!("error: {}", e);
- let mut cause = e.cause();
- loop {
- eprintln!("caused by: {}", cause);
- cause = match cause.cause() {
- Some(e) => e,
- None => break,
- };
- }
- std::process::exit(1);
- }
- }
Add Comment
Please, Sign In to add comment