1

可以说我有一些代码,例如:

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

4

1 回答 1

5

两种可能。

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

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

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

somevector.sort_unstable_by_key(|element| element.a)
于 2021-10-07T02:34:49.860 回答