gpt4 book ai didi

rust - 如何通过引用传递拥有的数组

转载 作者:行者123 更新时间:2023-11-29 08:22:33 24 4
gpt4 key购买 nike

我只是第一次玩 Rust,实现快速排序,而且我坚持引用动态大小的数组(我对固定大小的数组没有问题)。

我想要一个无限大的整数数组来排序,据我所知我可以用类似的东西创建它:

let array = ~[1,2,3,4,3,2,1];

但是,我不确定如何通过引用将其传递给分区函数。

partition ( a : &mut ~[uint], p: uint, i: uint) {
// partition a, in place
}

一旦我尝试对 a 中的任何元素重新排序,编译器就会报错:

error: cannot assign to immutable vec content a[..]

最佳答案

您应该使用矢量的可变借用而不是指向矢量的指针的可变借用,因此您应该摆脱分区函数类型中的那个 ~ 指针。例如:

fn partition(_: &mut [uint], _: uint, _: uint) { }

fn main() {
let mut array = ~[1, 2, 3, 4, 3, 2, 1];
partition(array, 0, 0);
}

请注意,array 作为可变借用指针自动传递。

如果you use a Vec instead , 那么你需要显式地创建一个切片:

fn partition(_: &mut [uint], _: uint, _: uint) { }

fn main() {
let mut array = vec!(1, 2, 3, 4, 3, 2, 1);
partition(array.as_mut_slice(), 0, 0);
}

两个代码片段都应该在最新的 Rust 上编译(来自提示)。

关于rust - 如何通过引用传递拥有的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com