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]