【发布时间】:2021-03-25 09:35:58
【问题描述】:
所以基本上我有这个:
let mut sortedNumbers = numbers.clone();
sortedNumbers.sort_by(|a, b| b.rational.cmp(&a.rational));
其中numbers 是&[..]
我想以某种方式对sortedNumbers 向量进行排序,但引用不可变。有什么想法吗?
【问题讨论】:
所以基本上我有这个:
let mut sortedNumbers = numbers.clone();
sortedNumbers.sort_by(|a, b| b.rational.cmp(&a.rational));
其中numbers 是&[..]
我想以某种方式对sortedNumbers 向量进行排序,但引用不可变。有什么想法吗?
【问题讨论】:
如果numbers 是&[T],那么numbers.clone() 也是&[T],指的是同一个数组。你想要的是numbers.to_vec() 或numbers.to_owned(),它们会给你一个Vec<T>,然后你可以修改它。
【讨论】:
#[derive(Copy, Clone)] 添加到您的结构中。当它想创建一个向量时,它必须将数组的每个元素复制到新的向量中,并尝试使用clone()。