[][src]Crate result_like

OptionLike and ResultLike

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

Option example

use result_like::option_like;

// Simple case with single argument name to use Some and None
option_like!(MyOption);

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

// convertable to option
let opt = v.into_option();
assert!(opt == Some(1));

// pub enum with custom names instead of Some and None
option_like!(pub Number, Value, Nan);

let v = Number::Value(10);
assert!(v != Number::Nan);

Result example in same way

use result_like::result_like;

// simply,
result_like!(pub(crate) MyResult);

// customizing,
result_like!(Trial, Success, Failure);

Try [result_like::impl_option_like] and [result_like::impl_result_like] to only append impls to your enum.

Macros

impl_option_like
impl_result_like
option_like
result_like

Traits

OptionLike

OptionLike macro

ResultLike

ResultLike macro