swc_ecma_minifier/util/
sort.rs

1use std::cmp::Ordering;
2
3pub(crate) fn is_sorted_by<I, T, F>(mut items: I, mut compare: F) -> bool
4where
5    I: Iterator<Item = T>,
6    T: Copy,
7    F: FnMut(&T, &T) -> Option<Ordering>,
8{
9    let last = match items.next() {
10        Some(e) => e,
11        None => return true,
12    };
13
14    items
15        .try_fold(last, |last, curr| {
16            if let Some(Ordering::Greater) | None = compare(&last, &curr) {
17                return Err(());
18            }
19            Ok(curr)
20        })
21        .is_ok()
22}