Macro show_notes::main_try
source ยท macro_rules! main_try { ($e:expr) => { ... }; }
Expand description
Define a macro like try! but which works in the context of main().
try! takes a Result<T, E> and, if it is Ok<T>, supplies the T
value, or if it is Err<E> returns the error from the function. However,
since main has a void tuple () return type, you cannot use try! in
main(). This main_try! macro instead debug-prints the error and returns.
// Alias `Result` for brevity.
type LocalResult = Result<i32, &'static str>;
let an_ok: LocalResult = Ok(10);
let ok_val = main_try!(an_ok);
assert_eq!(ok_val, 10);
// We try to assign to another val, but it's an error, so we return.
let an_err: LocalResult = Err("Alas, this is a failure.");
let err_val = main_try!(an_err); // Prints `Alas, this is a failure.`
// We'll never get here. If we did, the doctest would fail.
assert!(false);