【问题标题】:Can I somehow modify a '&' array?我可以以某种方式修改“&”数组吗?
【发布时间】:2021-03-25 09:35:58
【问题描述】:

所以基本上我有这个:

let mut sortedNumbers = numbers.clone();
    
sortedNumbers.sort_by(|a, b| b.rational.cmp(&a.rational));

其中numbers&[..]

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

【问题讨论】:

    标签: rust ownership borrowing


    【解决方案1】:

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

    【讨论】:

    • T 在我的例子中是一个带有两个 i32 的结构。我正在尝试使用 to_vec() 但它说 T 类型没有实现 Clone 特征。只要我能做到,这怎么可能 .clone() ?
    • #[derive(Copy, Clone)] 添加到您的结构中。当它想创建一个向量时,它必须将数组的每个元素复制到新的向量中,并尝试使用clone()
    • 是的,但我不明白为什么让 mut sortedNumbers = numbers.clone();然后工作。因为就像我在结构中使用没有#defining(Clone) 的clone() 一样。为什么 clone() 在这里工作?
    • 因为它只克隆引用,而不是任何元素。
    • 啊,有道理。谢谢塞巴斯蒂安!
    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 2010-09-08
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多