小编Erl*_*ch 的帖子

查找泛型类型T的最大允许值

我正在实现一个合并排序,它将对一个类型的数组进行排序T.在我的merge方法中,算法要求左右列表的最后一个元素为正无穷大.如何获得给定数据类型可以容纳的最大值?

fn merge<T: PartialOrd + Copy + std::fmt::Debug>(p: usize, q: usize, r: usize, array: &mut Vec<T>) {
    let left_size: usize = q - p;
    let right_size: usize = r - q;

    let mut left: Vec<T> = Vec::new();
    let mut right: Vec<T> = Vec::new();

    for i in 0..left_size {
        left.push(array[p + i]);
    }

    for i in 0..right_size {
        right.push(array[q + i]);
    }

    left.push(T::max_value()); //where I would put the max value
    right.push(T::max_value()); //where I would put …
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
1
解决办法
231
查看次数

不能在内部函数中使用外部类型参数的基本原理是什么?

我正在尝试创建一个递归内部函数,它将打印链表中的所有元素:

 fn print_stack(&self) {
    fn print_nodes(head: &Option<Box<Node<T>>>) {
        match head {
            Some(ref p) => {
                println!("{:?}",p.data);
                print_nodes(head.next);
            },
        }
   };
   print_nodes(&self.head);
}
Run Code Online (Sandbox Code Playgroud)

编译器生成以下错误

can't use type parameters from outer function; try using a local  type parameter instead.
Run Code Online (Sandbox Code Playgroud)

为什么这是一个错误?

rust

4
推荐指数
1
解决办法
520
查看次数

标签 统计

rust ×2