Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何包含和使用Rust库_Rust - Fatal编程技术网

如何包含和使用Rust库

如何包含和使用Rust库,rust,Rust,这是我的档案 梅因 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); } 及 分拣机 use std::vec; pub fn mergeSort<T: Clone+Ord>(a: &mut[T]){ let mid = a.len()/2 as

这是我的档案

梅因

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);
}

分拣机

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!("]");
}
使用std::vec;
发布fn合并排序(a:&mut[T]){
设mid=a.len()/2为uint;
让mut aux=vec::具有_容量(mid+1);
__合并排序(a,0,a.len(),aux);
合并排序(a:&mut[T]、lo:uint、hi:uint、aux:&mut[T]){
设mid=a.len()/2为uint;
如果mid>0{
__合并排序(a、lo、mid、aux);
__合并排序(a、mid+1、hi、aux);
__合并(a、mid、aux);
}
合并(a:&mut[T]、lo:uint、mid:uint、hi:uint、aux:&mut[T]){
__克隆_阵列(a、0、mid+1、aux、0);
设muti=0;
设mut j=0;
设mutk=0;
而k=a.len()-mid{
__克隆_数组(a,k,a.len(),aux,0);
打破
}否则,如果我>=mid{
打破
}

如果辅助[i]
带容量
不是
std::vec
中的函数,则在
vec::带容量
中将您的
v
大写(
vec
自动在范围内,作为序曲的一部分).

在不久的将来,您将使用Cargo来管理包括外部依赖项在内的内容。

我认为在您粘贴的内容上方的错误消息中还有几行,您是否也可以粘贴它们?@dbaupp我编辑了这篇文章。谢谢!您有什么版本的Rust?(输出的
rustc-v
)rustc 0.10主机:x86_64-unknown-linux-gnuWhy是领先的
\uuuu
?这完全是多余的。哇,我不敢相信是这样。也谢谢你的文档。