Guest User

Untitled

a guest
Jun 24th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. extern crate failure;
  2. use failure::ResultExt;
  3. use std::fs::File;
  4.  
  5. type FailResult<T> = Result<T, failure::Error>;
  6.  
  7. fn opensome() -> FailResult<()> {
  8. File::open("/nonexisintg")?;
  9. Ok(())
  10. }
  11.  
  12. fn try_open() -> FailResult<()> {
  13. println!("Trying");
  14. opensome().context("failed while trying")?;
  15. Ok(())
  16. }
  17.  
  18. fn run() -> FailResult<()> {
  19. try_open()
  20. }
  21.  
  22. fn main() {
  23. if let Err(e) = run() {
  24. eprintln!("error: {}", e);
  25. let mut cause = e.cause();
  26. loop {
  27. eprintln!("caused by: {}", cause);
  28. cause = match cause.cause() {
  29. Some(e) => e,
  30. None => break,
  31. };
  32. }
  33. std::process::exit(1);
  34. }
  35. }
Add Comment
Please, Sign In to add comment