我正在实现一个合并排序,它将对一个类型的数组进行排序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) 我正在尝试创建一个递归内部函数,它将打印链表中的所有元素:
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 ×2