# try-unwrap A revolutionary new crate that allows you to unwrap() without making your stupid software panic. Do you ever wish "man, I wish I could use unwrap() everywhere and not have my code panic"? Boy do we just have the answer for you! This revolutionary crate adds `try_unwrap()` to `Result` and `Option` types, which allow you to safely `unwrap()`! How does it work? It's quite shrimple really. If your type is `Ok`, then try-unwrap will `unwrap()` successfully and return the type. If it ends up being an `Err`, then it will unwrap the error instead and return that for you! And don't worry about type strictness either: we return the value wrapped in a `Result` that supports both the `Ok` and `Err`!! ### Examples Whether your type is `Result` or `Option`, using try-unwrap is super easy! ``` let ok: Result = Ok(3); assert_eq!(ok.try_unwrap(), Ok(3)); let err: Result<(), i32> = Err(2); assert_eq!(err.try_unwrap(), Err(2)); ``` ``` let some: Option = Some(4); assert_eq!(some.try_unwrap(), Some(4)); let none: Option = None; assert_eq!(none.try_unwrap(), None); ``` ### Wait, what? We know! It's crazy that no one has thought of it before. But don't worry no more, because we did it. ### Isn't that, like, useless? What? Of course not! ### How did you do it? The answer to all your burning questions are here: https://hackerbirds.neocities.org/try-unwrap/