prksort 0.1.0

This is an implementation of the Merge Sort and Quick Sort algorithms in Rust
Documentation
pub fn sort<T: PartialEq + PartialOrd + Copy>(arr: &mut Vec<T>) {
    if arr.len() <= 1 {
        return;
    }

    let mid = arr.len() / 2;

    let mut left = arr[..mid].to_vec();

    let mut right = arr[mid..].to_vec();

    sort(&mut left);

    sort(&mut right);

    merge(&mut left, &mut right, arr);
}

fn merge<T: PartialOrd + Copy + PartialEq>(left: &mut [T], right: &mut [T], result: &mut [T]) {
    let mut left_idx = 0;

    let mut right_idx = 0;

    let mut result_idx = 0;

    while left_idx < left.len() && right_idx < right.len() {
        if left[left_idx] <= right[right_idx] {
            result[result_idx] = left[left_idx];

            left_idx += 1;
        } else {
            result[result_idx] = right[right_idx];

            right_idx += 1;
        }

        result_idx += 1;
    }

    while left_idx < left.len() {
        result[result_idx] = left[left_idx];

        left_idx += 1;

        result_idx += 1;
    }

    while right_idx < right.len() {
        result[result_idx] = right[right_idx];

        right_idx += 1;

        result_idx += 1;
    }
}