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}