gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:50:50 25 4
gpt4 key购买 nike

我正在实现一个合并排序,它将对 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 the max value

let mut i: usize = 0;
let mut j: usize = 0;

for k in p..r {
if left[i] <= right[j] {
array[k] = left[i];
i += 1;
} else {
array[k] = right[j];
j += 1;
}
}
}

最佳答案

据我所知,目前还没有办法用标准库做到这一点。解决它的一种方法是制作您自己的特征,添加另一个特征绑定(bind)到 merge 并为您期望的类型实现您的特征。

然后,u32 的特定特征实现将返回 std::u32::MAX,其他类型依此类推。

这是一个discussion from earlier this year .

作为oli_obk - ker pointed out下面,num crate 已经有这样一个特征:Bounded .

关于rust - 查找泛型类型 T 的最大允许值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47904954/

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