#[doc(inline)]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__slice_is_sorted as is_sorted;
#[doc(hidden)]
#[macro_export]
macro_rules! __slice_is_sorted {
($slice:expr $(,)?) => {
$crate::__slice_is_sorted_impl! {
($slice, l_item, r_item) {};
$crate::__::matches!(
$crate::cmp::const_cmp!(l_item, r_item),
$crate::__::Less | $crate::__::Equal
)
}
};
}
#[doc = crate::docs::closure_arg_annotated_params_limitations_docs!("")]
#[doc(inline)]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__slice_is_sorted_by as is_sorted_by;
#[doc(hidden)]
#[macro_export]
macro_rules! __slice_is_sorted_by {
($slice:expr, $($closure:tt)*) => {
$crate::__slice_is_sorted_impl!{
($slice, l_item, r_item) {};
$crate::__parse_closure_2!(
($crate::__eval_closure) ((l_item, r_item),) (is_sorted_by),
$($closure)*
)
}
};
}
#[doc = crate::docs::closure_arg_annotated_params_limitations_docs!("")]
#[doc(inline)]
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "cmp")))]
pub use crate::__slice_is_sorted_by_key as is_sorted_by_key;
#[doc(hidden)]
#[macro_export]
macro_rules! __slice_is_sorted_by_key {
($slice:expr, $($closure:tt)*) => {
$crate::__slice_is_sorted_impl!{
($slice, l_item, r_item)
{
let r_item = $crate::__parse_closure_1!{
($crate::__eval_closure) (r_item,) (@default(0u8) is_sorted_by_key),
$($closure)*
};
};
$crate::__::matches!(
$crate::cmp::const_cmp!(l_item, r_item),
$crate::__::Less | $crate::__::Equal
)
}
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __slice_is_sorted_impl {
(
($slice:expr, $l_item:ident, $r_item:ident)
{$($convert_item_into_key:tt)*};
$comparator:expr
) => (
match ($crate::slice::__AssertSlice { x: &$slice }.x) {mut slice => {
let mut prev = $crate::__::None;
loop {
match slice {
[] => break true,
[$r_item, rem @ ..] => {
$($convert_item_into_key)*
if false {
$crate::__utils::__infer_option_of(&$r_item, &prev)
}
if let $crate::__::Some($l_item) = prev
&& !$comparator
{
break false;
}
prev = $crate::__::Some($r_item);
slice = rem;
}
}
}
}}
)
}