gpt4 book ai didi

rust - 如何包含和使用 Rust 库

转载 作者:行者123 更新时间:2023-11-29 08:30:34 26 4
gpt4 key购买 nike

这是我的文件

主要.rs

mod sort;

fn main() {
let v = ~[0,1,3,7,5,7,9,4,2,6,9,5,3,5,0,7,6,9,0,2,3,4,2,4,7,9,7];
sort::mergeSort(v);
sort::print(v);
}

排序.rs

use std::vec;
pub fn mergeSort<T: Clone+Ord>(a: &mut[T]){
let mid = a.len()/2 as uint;
let mut aux = vec::with_capacity(mid+1);
__mergesort(a, 0, a.len(), aux);

fn __mergesort<T: Clone+Ord>(a: &mut[T], lo: uint, hi: uint, aux: &mut[T]){
let mid = a.len()/2 as uint;
if mid > 0 {
__mergesort(a, lo, mid, aux);
__mergesort(a, mid+1, hi, aux);
__merge(a, mid, aux);
}

fn __merge<T: Clone+Ord>(a: &mut[T], lo: uint, mid: uint, hi: uint, aux: &mut[T]) {
__clone_array(a, 0, mid+1, aux, 0);
let mut i = 0;
let mut j = 0;
let mut k = 0;
while k < a.len() {
if j >= a.len()-mid {
__clone_array(a, k, a.len(), aux, 0);
break;
} else if i >= mid {
break;
}
if aux[i] <= a[mid+j] {
a[k] = aux[i];
i += 1;
} else {
a[k] = a[mid+j];
j += 1;
}
k += 1;
}
}

fn __clone_array<T: Clone>(a: &[T], af: uint, al: uint, b: &mut[T], bf: uint){
for i in range(bf, bf+al-af) {
b[i] = a[af+i].clone();
}
}
}
}

pub fn print<T: ToStr>(v: &[T]) {
print!("[ ");
for i in range(0, v.len()) {
print!("{} ", v[i].to_str());
}
println!("]");
}

这是我得到的错误

sort.rs:44:23: 44:41 错误:未解析的名称vec::with_capacity

sort.rs:44 let mut aux = vec::with_capacity(mid+1); ^~~~~~~~~~~~~~~~~~

错误:由于先前的错误而中止

我做错了什么?

最佳答案

with_capacity 不是 std::vec 中的函数,它是 a static method on the Vec type .在 vec::with_capacity 中将你的 v 大写(Vec 自动在范围内,成为前奏的一部分)。

关于rust - 如何包含和使用 Rust 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285955/

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