如何对包含结构的向量进行排序?

How to sort a vector containing structs?

假设我有一些代码:

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”的长度排序?

两种可能。

为您的结构实施 Ord 特征,或使用 sort_unstable_by_key 方法。

如果您的 generic_structobvioussingle 排序方式,则您会使用前者它们不仅在您当前的排序用例中而且在一般情况下都有意义。

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

somevector.sort_unstable_by_key(|element| element.a)