OptionLike and ResultLike

Install: https://crates.io/crates/result-like

Define your own Option-like and Result-like enum types. Avoid to reimplement everything of option and result for your own enums.

Option example ```rust use result_like::OptionLike;

// Simple case with single argument name to use Some and None

[derive(OptionLike)]

enum MyOption { Some(T), None, }

let v = MyOption::Some(1); // every option utilities are possible including unwrap, map, and, or etc. assert_eq!(v.unwrap(), 1);

// convertable to option let opt = v.intooption(); asserteq!(opt, Some(1));

// enum with custom names instead of Some and None

[derive(OptionLike)]

enum Number { Value(i64), Nan, }

let v = Number::Value(10); assert_ne!(v, Number::Nan); ```

Result example in same way ```rust use result_like::ResultLike;

// typical

[derive(ResultLike)]

enum MyResult { Ok(T), Err(E), }

// value-only

[derive(ResultLike)]

enum Trial { Success(String), Failure(String), } ```