gpt4 book ai didi

rust - 如何在 Rust 中实现 `{integer}` 类型的特征

转载 作者:行者123 更新时间:2023-12-05 04:25:05 29 4
gpt4 key购买 nike

有没有办法为 {integer} 类型(或所有整数类型)实现特征。因为(作为一个最小的例子):

pub trait X {
fn y();
}

impl<T> X for T {
fn y() {
println!("called");
}
}

fn main() {
(32).y();
}

报错:

error[E0689]: can't call method `y` on ambiguous numeric type `{integer}`
--> src/main.rs:12:10
|
12 | (32).y();
| ^
|
help: you must specify a concrete type for this numeric value, like `i32`
|
12 | (32_i32).y();
| ~~~~~~

For more information about this error, try `rustc --explain E0689`.

有没有办法为任何整数类型实现特征 X 以便它可以用于任何整数(甚至是不明确的 {integer} 类型)?因为如果所有整数类型的实现都是相同的,为什么要关心确切的类型?

最佳答案

可以像这样通过 num_traits::PrimInt 绑定(bind)类型 T:

use num_traits::PrimInt;

trait Trait {
fn y(self) -> Self;
}

impl<T: PrimInt> Trait for T {
fn y(self) -> Self {
println!("called");
return self;
}
}

fn main() {
let x = 32;
println!("{}", x.y());
}

关于rust - 如何在 Rust 中实现 `{integer}` 类型的特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73347585/

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