相关疑难解决方法(0)

使用泛型类型时如何使用整数文字?

我想实现一个函数来计算任何泛型类型的整数中的位数.这是我提出的代码:

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)

generics int traits rust

7
推荐指数
2
解决办法
1905
查看次数

算术运算上的 Rust 泛型

我编写了一个通用函数来检查给定数字是否为偶数:

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)

generics rust

3
推荐指数
1
解决办法
1574
查看次数

标签 统计

generics ×2

rust ×2

int ×1

traits ×1