additional util macros and reorg
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
4fbbfe5d30
commit
3eed408b29
1 changed files with 52 additions and 33 deletions
|
@ -57,6 +57,14 @@ macro_rules! extract_variant {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Functor for !is_empty()
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! is_not_empty {
|
||||||
|
() => {
|
||||||
|
|x| !x.is_empty()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! apply {
|
macro_rules! apply {
|
||||||
(1, $($idx:tt)+) => {
|
(1, $($idx:tt)+) => {
|
||||||
|
@ -76,24 +84,35 @@ macro_rules! apply {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Functor for truthy
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! at {
|
macro_rules! is_true {
|
||||||
($idx:tt) => {
|
() => {
|
||||||
|t| t.$idx
|
|x| !!x
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Functor for falsy
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! ref_at {
|
macro_rules! is_false {
|
||||||
($idx:tt) => {
|
() => {
|
||||||
|ref t| &t.$idx
|
|x| !x
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Functor for equality to non-zero
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! deref_at {
|
macro_rules! is_nonzero {
|
||||||
($idx:tt) => {
|
() => {
|
||||||
|t| *t.$idx
|
|x| x != 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Functor for equality to zero
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! is_zero {
|
||||||
|
() => {
|
||||||
|
$crate::is_matching!(0)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,14 +140,6 @@ macro_rules! is_less_than {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Functor for equality to zero
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! is_zero {
|
|
||||||
() => {
|
|
||||||
$crate::is_matching!(0)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Functor for matches! i.e. .is_some_and(is_matching!('A'..='Z'))
|
/// Functor for matches! i.e. .is_some_and(is_matching!('A'..='Z'))
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! is_matching {
|
macro_rules! is_matching {
|
||||||
|
@ -141,14 +152,6 @@ macro_rules! is_matching {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Functor for !is_empty()
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! is_not_empty {
|
|
||||||
() => {
|
|
||||||
|x| !x.is_empty()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Functor for equality i.e. (a, b).map(is_equal!())
|
/// Functor for equality i.e. (a, b).map(is_equal!())
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! is_equal {
|
macro_rules! is_equal {
|
||||||
|
@ -157,18 +160,34 @@ macro_rules! is_equal {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Functor for truthy
|
/// Functor for |x| *x.$i
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! is_true {
|
macro_rules! deref_at {
|
||||||
() => {
|
($idx:tt) => {
|
||||||
|x| !!x
|
|t| *t.$idx
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Functor for falsy
|
/// Functor for |ref x| x.$i
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! is_false {
|
macro_rules! ref_at {
|
||||||
() => {
|
($idx:tt) => {
|
||||||
|x| !x
|
|ref t| &t.$idx
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Functor for |&x| x.$i
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! val_at {
|
||||||
|
($idx:tt) => {
|
||||||
|
|&t| t.$idx
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Functor for |x| x.$i
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! at {
|
||||||
|
($idx:tt) => {
|
||||||
|
|t| t.$idx
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue