compile_time_sort 0.2.2

Sort arrays and slices of primitives in const contexts.
Documentation

compile_time_sort

Crates.io Version Docs.rs Documentation Github Repository Link GitHub Actions Workflow Status

This crate provides functions for sorting arrays and slices of primitives in const contexts.

Arrays and slices of bools, u8s, and i8s are sorted with counting sort while arrays of other types are sorted with quicksort.

Functions with the naming convention into_sorted_*_array take an array by value, and functions with the naming convention sort_*_slice take a mutable reference to a slice.

Examples

Sort an array by value:

use const_sort::into_sorted_i32_array;

const ARRAY: [i32; 5] = [-3, 3, 2, i32::MAX, 0];
const SORTED_ARRAY: [i32; 5] = into_sorted_i32_array(ARRAY);

assert_eq!(SORTED_ARRAY, [-3, 0, 2, 3, i32::MAX]);

Sort an array by reference:

use const_sort::sort_i32_slice;

const SORTED_ARRAY: [i32; 5] = {
    let mut arr = [5, i32::MIN, 0, -2, 0];
    sort_i32_slice(&mut arr);
    arr
};

assert_eq!(SORTED_ARRAY, [i32::MIN, -2, 0, 0, 5]);

Features

sort_slices: enables the sort_*_slice functions and raises the MSRV of the crate to 1.83.0.

License