unwrap_goto

unwrap Option an Result data. When data is wrap with Some or Ok, it will unwrap, otherwise can goto return/cotinue/break as you want.

When none will return.

```rust

[macro_use]

extern crate unwrapgoto; fn dononeisreturn(m: &Vec>) { let mut k = 0; for v in m { println!("imcome:{:?}", v); k = someorreturn!(v); println!("wrap value:{:?}", k); } assert_eq!(k, 1); 0 }

fn noneisreturn() { let m = vec![Some(1), None, Some(1)]; let n = dononeis_return(&m); println!("return value:{:?}", n); }

```

```rust fn dononeisreturn(m: &Vec>) -> i64 { let mut k = 0; for v in m { println!("imcome:{:?}", v); k = someorreturn!(v, 8); println!("wrap value:{:?}", k); } asserteq!(k, 1); 0 }

fn noneisreturn() { let m = vec![Some(1), None, Some(1)]; let n = dononeis_return(&m); println!("return value:{:?}", n); }

```

```rust use log::error;

fn callwhenerrreturnlog() { let x: Result = Err("Some error message"); okorreturn!(x, (), error!("log error info.{:?}", x)); println!("anything print out"); } ```