#![no_std]
#![deny(missing_docs)]
#[allow(unused_imports)]
#[doc(hidden)]
pub mod import {
pub use core::{option::Option, result::Result};
}
#[macro_export]
macro_rules! const_try {
($result: expr) => {
match $result {
$crate::import::Result::Ok(value) => value,
$crate::import::Result::Err(error) => return $crate::import::Result::Err(error),
}
};
}
#[macro_export]
macro_rules! const_none {
($option: expr) => {
match $option {
$crate::import::Option::Some(value) => value,
$crate::import::Option::None => return $crate::import::Option::None,
}
};
}
#[macro_export]
macro_rules! const_map {
($option: expr => $function: expr) => {
match $option {
$crate::import::Option::Some(value) => $crate::import::Option::Some($function(value)),
$crate::import::Option::None => $crate::import::Option::None,
}
};
}
#[macro_export]
macro_rules! const_ok {
($result: expr) => {
match $result {
$crate::import::Result::Ok(value) => $crate::import::Option::Some(value),
$crate::import::Result::Err(_) => $crate::import::Option::None,
}
};
}
#[macro_export]
macro_rules! const_err {
($result: expr) => {
match $result {
$crate::import::Result::Ok(_) => $crate::import::Option::None,
$crate::import::Result::Err(error) => $crate::import::Option::Some(error),
}
};
}
#[macro_export]
macro_rules! const_map_ok {
($result: expr => $function: expr) => {
match $result {
$crate::import::Result::Ok(value) => $crate::import::Result::Ok($function(value)),
$crate::import::Result::Err(error) => $crate::import::Result::Err(error),
}
};
}
#[macro_export]
macro_rules! const_map_err {
($result: expr => $function: expr) => {
match $result {
$crate::import::Result::Ok(value) => $crate::import::Result::Ok(value),
$crate::import::Result::Err(error) => $crate::import::Result::Err($function(error)),
}
};
}
#[macro_export]
macro_rules! const_early {
($condition: expr => $error: expr) => {
if $condition {
return $crate::import::Result::Err($error);
}
};
}
#[macro_export]
macro_rules! const_quick {
($condition: expr) => {
if $condition {
return $crate::import::Option::None;
}
};
}
#[macro_export]
macro_rules! const_assert {
($condition: expr) => {
const _: () = assert!($condition);
};
}
#[macro_export]
macro_rules! const_assert_eq {
($left: expr, $right: expr $(,)?) => {
$crate::const_assert!($left == $right);
};
}
#[macro_export]
macro_rules! const_assert_ne {
($left: expr, $right: expr $(,)?) => {
$crate::const_assert!($left != $right);
};
}