Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

Rust で複数の要素をキーとしてソートする

メモ。
配列の配列があり、1個目の要素を第一キー、2個目の要素を第二キーとしてソートする。
Perl だと sort { $a->[0] <=> $b->[0] or $a->[1] <=> $b->[1] } @array のやつ。
Ruby だと array.sort! {|a, b| [a[0], a[1]] <=> [b[0], b[1]] } のやつ。

fn main() {
    let mut array: [[u32; 2]; 10] = [
        [10,  4],
        [14,  8],
        [ 1, 32],
        [28, 84],
        [28, 45],
        [ 2, 23],
        [ 4, 69],
        [28,  3],
        [ 1,  9],
        [ 1, 23],
    ];
    array.sort_by(|a, b| {
        match a[0].cmp(&b[0]) {
            std::cmp::Ordering::Equal => a[1].cmp(&b[1]),
            other => other,
        }
    });
    for a in array.iter() {
        println!("{:?}", a);
    }
}
[1, 9]
[1, 23]
[1, 32]
[2, 23]
[4, 69]
[10, 4]
[14, 8]
[28, 3]
[28, 45]
[28, 84]