Rust 我是否可以修改'&';阵列?

Rust 我是否可以修改'&';阵列?,rust,ownership,borrowing,Rust,Ownership,Borrowing,所以基本上我有: 让mut sortedNumbers=numbers.clone(); sortedNumber.sort|u by(| a,b | b.rational.cmp(&a.rational)); 其中,数字是一个和[…] 我想以某种方式对sortedNumber向量进行排序,但引用是不可变的。有什么想法吗?如果numbers是一个&[T],那么numbers.clone()也是一个&[T],指代相同的数组。你想要的是数字。to_vec()或数字。to_owned(),这会给你一

所以基本上我有:

让mut sortedNumbers=numbers.clone();
sortedNumber.sort|u by(| a,b | b.rational.cmp(&a.rational));
其中,
数字
是一个
和[…]


我想以某种方式对
sortedNumber
向量进行排序,但引用是不可变的。有什么想法吗?

如果
numbers
是一个
&[T]
,那么
numbers.clone()
也是一个
&[T]
,指代相同的数组。你想要的是
数字。to_vec()
数字。to_owned()
,这会给你一个
vec
,然后你可以修改它。

T在我的例子中是一个有两个i32s的结构。我试图使用to_vec(),但它说T类型没有实现克隆特性。只要我能做到,这怎么可能呢。clone()?将
#[派生(复制,克隆)]
添加到您的结构中。当它想要创建一个向量时,它必须将数组中的每个元素复制到新的向量中,并尝试使用
clone()
。是的,但我不明白为什么让mut sortedNumbers=numbers.clone();那就行了。因为我在使用clone()时没有为结构定义(clone)。为什么clone()在这里工作?因为它只克隆引用,不克隆任何元素。啊,这很有意义。谢谢你,塞巴斯蒂安!