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

use*_*230 1 sorting vector rust

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

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];
}
Run Code Online (Sandbox Code Playgroud)

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

Lag*_*aer 5

两种可能性:

如果对于您的generic_struct,有一种明显单一的方法来对它们进行排序,并且这种方法不仅在您当前的排序用例中有意义,而且在一般情况下都有意义,那么您可以使用前者。

如果此排序方案更像是“一次性”,则您可以使用后者。

somevector.sort_unstable_by_key(|element| element.a)
Run Code Online (Sandbox Code Playgroud)