我想实现一个函数来计算任何泛型类型的整数中的位数.这是我提出的代码:
extern crate num;
use num::Integer;
fn int_length<T: Integer>(mut x: T) -> u8 {
if x == 0 {
return 1;
}
let mut length = 0u8;
if x < 0 {
length += 1;
x = -x;
}
while x > 0 {
x /= 10;
length += 1;
}
length
}
fn main() {
println!("{}", int_length(45));
println!("{}", int_length(-45));
}
Run Code Online (Sandbox Code Playgroud)
这是编译器输出
error[E0308]: mismatched types
--> src/main.rs:5:13
|
5 | if x == 0 {
| ^ expected type parameter, …Run Code Online (Sandbox Code Playgroud) 我编写了一个通用函数来检查给定数字是否为偶数:
use std::ops::Rem;
fn main() {
let x: u16 = 31;
let y: u32 = 40;
println!("x = {}, y = {}", is_even(x), is_even(y));
}
fn is_even<T: Rem<Output = T> + PartialEq>(n: T) -> bool {
n % 2 == 0
}
Run Code Online (Sandbox Code Playgroud)
它会产生编译器错误:
use std::ops::Rem;
fn main() {
let x: u16 = 31;
let y: u32 = 40;
println!("x = {}, y = {}", is_even(x), is_even(y));
}
fn is_even<T: Rem<Output = T> + PartialEq>(n: T) -> bool {
n % …Run Code Online (Sandbox Code Playgroud)