rust 如何对结构体的向量进行排序?

ryevplcw  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(116)

假设我有一些代码,比如:

struct GenericStruct {
    a: u8,
    b: String,
}

fn sort_array(generic_vector: Vec<GenericStruct>) -> Vec<GenericStruct> {
    // Some code here to sort a vector.
    todo!();
}

fn main() {
    let some_words = String::from("Hello Word");
    let x = GenericStruct { a: 25, b: some_words };
    let some_vector: Vec<GenericStruct> = vec![x];
}

如何根据部分对向量进行排序,例如按a排序或按b的长度排序?

mo49yndu

mo49yndu1#

两种可能性:

  • 为结构体实现Ord trait,并使用sort/sort_unstable方法
  • 使用sort_by_key/sort_unstable_by_key方法

如果对于generic_struct,有一种 * 明显 * 和 * 单一 * 的方式来排序它们,不仅在当前的排序用例中而且在一般情况下都有意义,那么您将使用前者。
如果这个排序方案更像是“一次性的”,则可以使用后者。

somevector.sort_unstable_by_key(|element| element.a)

相关问题