#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__min as min;
#[doc(hidden)]
#[macro_export]
macro_rules! __min {
($left:expr, $right:expr) => {
match ($left, $right) {
(left, right) => {
if let $crate::__::Greater = $crate::cmp::const_cmp!(left, right) {
right
} else {
left
}
}
}
};
}
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__max as max;
#[doc(hidden)]
#[macro_export]
macro_rules! __max {
($left:expr, $right:expr) => {
match ($left, $right) {
(left, right) => {
if let $crate::__::Greater = $crate::cmp::const_cmp!(left, right) {
left
} else {
right
}
}
}
};
}
#[doc = crate::docs::closure_arg_annotated_params_limitations_docs!("")]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__min_by as min_by;
#[doc(hidden)]
#[macro_export]
macro_rules! __min_by {
($left:expr, $right:expr, $($comparator:tt)*) => {
$crate::__parse_closure_2!{
($crate::__min_by_inner)
($left, $right,)
(min_by),
$($comparator)*
}
};
}
#[doc = crate::docs::closure_arg_annotated_params_limitations_docs!("")]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__max_by as max_by;
#[doc(hidden)]
#[macro_export]
macro_rules! __max_by {
($left:expr, $right:expr, $($comparator:tt)*) => {
$crate::__parse_closure_2!{
($crate::__max_by_inner)
($left, $right,)
(max_by),
$($comparator)*
}
};
}
#[macro_export]
#[doc(hidden)]
macro_rules! __min_by_inner {
(
$left:expr, $right:expr,
($($closure_params:tt)*) $(-> $ret_ty:ty)? $ret_val:block
) => {
match [$left, $right] {
[left, right] => {
let $($closure_params)* = (&left, &right);
let ret_val: $crate::__::Ordering = $ret_val;
if let $crate::__::Greater = ret_val {
right
} else {
left
}
}
}
};
}
#[macro_export]
#[doc(hidden)]
macro_rules! __max_by_inner {
(
$left:expr, $right:expr,
($($closure_params:tt)*) $(-> $ret_ty:ty)? $ret_val:block
) => {
match [$left, $right] {
[left, right] => {
let $($closure_params)* = (&left, &right);
let ret_val: $crate::__::Ordering = $ret_val;
if let $crate::__::Greater = ret_val {
left
} else {
right
}
}
}
};
}
#[doc = crate::docs::closure_arg_annotated_params_limitations_docs!("")]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__min_by_key as min_by_key;
#[doc(hidden)]
#[macro_export]
macro_rules! __min_by_key {
($left:expr, $right:expr, $($comparator:tt)*) => {
$crate::__parse_closure_1!{
($crate::__minmax_by_key)
($left, $right, Greater,)
(min_by_key),
$($comparator)*
}
};
}
#[doc = crate::docs::closure_arg_annotated_params_limitations_docs!("")]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__max_by_key as max_by_key;
#[doc(hidden)]
#[macro_export]
macro_rules! __max_by_key {
($left:expr, $right:expr, $($comparator:tt)*) => {
$crate::__parse_closure_1!{
($crate::__minmax_by_key)
($right, $left, Less,)
(max_by_key),
$($comparator)*
}
};
}
#[macro_export]
#[doc(hidden)]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
macro_rules! __minmax_by_key {
(
$left:expr, $right:expr, $ord:ident,
($($elem:tt)*) $(-> $ret_ty:ty)? $v:block
) => {
match [$left, $right] {
[left, right] => {
let left_key $(: $ret_ty)? = {
let $($elem)* = &left;
$v
};
let right_key $(: $ret_ty)? = {
let $($elem)* = &right;
$v
};
if let $crate::__::$ord = $crate::cmp::const_cmp!(left_key, right_key) {
right
} else {
left
}
}
}
};
}