compile_time_sort 0.1.0

Sort arrays and slices of primitives in const contexts.
Documentation

compile_time_sort

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::sort_i32_array;

const ARRAY: [i32; 5] = [-3, 3, 2, i32::MAX, 0];
const SORTED_ARRAY: [i32; 5] = sort_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]);

License