Skip to content

Commit debc50c

Browse files
committed
chore(git): merge from master
2 parents 7862158 + 2b3fcf1 commit debc50c

1 file changed

Lines changed: 37 additions & 2 deletions

File tree

tests/_utils.rs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use pretty_assertions::assert_eq;
1515
use rand::{distr::Alphanumeric, rng, Rng};
1616
use rayon::prelude::*;
1717
use std::{
18+
cmp::Ordering,
1819
env::temp_dir,
1920
fs::{create_dir, metadata, remove_dir_all, symlink_metadata},
2021
io::Error,
@@ -261,10 +262,10 @@ where
261262
let DataTreeReflection {
262263
name,
263264
size,
264-
mut children,
265+
children,
265266
} = tree_reflection;
266-
children.sort_by(|left, right| left.name.cmp(&right.name));
267267
let children = children
268+
.into_sorted_by(|left, right| left.name.cmp(&right.name))
268269
.into_par_iter()
269270
.map(sanitize_tree_reflection)
270271
.collect();
@@ -489,3 +490,37 @@ pub fn read_apparent_size(path: &Path) -> u64 {
489490
.unwrap_or_else(|error| panic!("Can't read metadata at {path:?}: {error}"))
490491
.len()
491492
}
493+
494+
/// Utility methods to sort various types of arrays.
495+
pub trait IntoSorted<Item>: Sized {
496+
/// Sort an array by [`Ord`] and return it.
497+
fn into_sorted(self) -> Self
498+
where
499+
Item: Ord;
500+
501+
/// Sort an array by a function and return it.
502+
fn into_sorted_by<Order>(self, order: Order) -> Self
503+
where
504+
Order: FnMut(&Item, &Item) -> Ordering;
505+
}
506+
507+
impl<Item, Array> IntoSorted<Item> for Array
508+
where
509+
Array: AsMut<[Item]> + Sized,
510+
{
511+
fn into_sorted(mut self) -> Self
512+
where
513+
Item: Ord,
514+
{
515+
self.as_mut().sort();
516+
self
517+
}
518+
519+
fn into_sorted_by<Order>(mut self, order: Order) -> Self
520+
where
521+
Order: FnMut(&Item, &Item) -> Ordering,
522+
{
523+
self.as_mut().sort_by(order);
524+
self
525+
}
526+
}

0 commit comments

Comments
 (0)