minutus 0.5.0

mruby bridge for Rust
Documentation
use super::*;

impl<T: TryFromMrb> TryFromMrb for Option<T> {
    fn try_from_mrb(value: MrbValue) -> MrbResult<Self> {
        unsafe {
            if minu_nil_p(value.val) {
                return Ok(None);
            } else {
                Ok(Some(T::try_from_mrb(value)?))
            }
        }
    }
}

impl<T: TryIntoMrb> TryIntoMrb for Option<T> {
    fn try_into_mrb(self, mrb: *mut minu_state) -> MrbResult<MrbValue> {
        unsafe {
            if let Some(v) = self {
                v.try_into_mrb(mrb)
            } else {
                Ok(MrbValue::new(mrb, minu_nil_value()))
            }
        }
    }
}