into_sorted/unstable/functions.rs
1use core::cmp::Ordering;
2
3/// Sort an array by [`Ord`] and return it.
4///
5/// This function calls [`slice::sort_unstable`] under the hook.
6///
7/// [`slice::sort_unstable`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable
8#[inline]
9pub fn into_sorted_unstable<Item, Array>(mut array: Array) -> Array
10where
11 Array: AsMut<[Item]>,
12 Item: Ord,
13{
14 array.as_mut().sort_unstable();
15 array
16}
17
18/// Sort an array by a function and return it.
19///
20/// This function calls [`slice::sort_unstable_by`] under the hook.
21///
22/// [`slice::sort_unstable_by`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable_by
23#[inline]
24pub fn into_sorted_unstable_by<Item, Array, Order>(mut array: Array, order: Order) -> Array
25where
26 Array: AsMut<[Item]>,
27 Order: FnMut(&Item, &Item) -> Ordering,
28{
29 array.as_mut().sort_unstable_by(order);
30 array
31}
32
33/// Sort an array by a key extraction function and return it.
34///
35/// This function calls [`slice::sort_unstable_by_key`] under the hook.
36///
37/// [`slice::sort_unstable_by_key`]: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_unstable_by_key
38#[inline]
39pub fn into_sorted_unstable_by_key<Item, Array, Key, GetKey>(
40 mut array: Array,
41 get_key: GetKey,
42) -> Array
43where
44 Array: AsMut<[Item]>,
45 GetKey: FnMut(&Item) -> Key,
46 Key: Ord,
47{
48 array.as_mut().sort_unstable_by_key(get_key);
49 array
50}