rust - 如何从 T 中减去 1,其中 T:num_traits::Num?
问题描述
我正在尝试使特征适用于所有数字整数类型。我虽然限制它num_traits::Num
会迫使它只适用于u8、u16等,所以-1总是有效的。
pub fn divide_round_up<T: num_traits::Num>(value: T, divisor: T) -> T {
return (value + divisor - 1) / divisor;
}
我明白了
|
19 | pub fn divide_round_up<T: num_traits::Num>(value: T, divisor: T) -> T {
| - this type parameter
20 | return (value + divisor - 1) / divisor;
| ^ expected type parameter `T`, found integer
我应该在这里做什么?
顺便说一句,没有板条箱就没有办法做到这一点吗?
解决方案
您可以绑定您的特征以使用num_traits::identities::One
:
use num_traits; // 0.2.14
pub fn divide_round_up<T: num_traits::Num + num_traits::identities::One + Copy>(
value: T,
divisor: T,
) -> T {
return (value + divisor - T::one()) / divisor;
}
推荐阅读
- python-3.x - 如何循环遍历具有不同日期的时间戳索引的数据框是一个循环?
- regex - 将pandas单元格中靠近第n个字符位置的长字符串拆分为多个单元格而不拆分单词
- oracle - 查询分组,并在两个不同的列中获取结果
- sql - 大型数据库上的慢速 SQL 查询
- javascript - 下拉子菜单不会保持打开状态
- php - PHP:如何使用 cURL 获取网站并像真正的浏览器一样工作?
- java - 使用属性设置枚举值
- macos - 我在哪里可以找到我的 NSCocoaErrorDomain 描述?
- jira - JIRA - Excel 报告包含问题进入特定状态的日期(尝试计算周期时间)
- android - 尝试从服务器获取数据时出现 Android URL 和 HttpURLConnection 异常