[英]How to implement a trait on `{integer}` type in Rust
有没有办法为{integer}
类型(或所有 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`.
有没有办法为任何 integer 类型实现特征X
,以便它可以用于任何 integer(甚至是模棱两可的{integer}
类型)? 因为如果所有 integer 类型的实现都是一样的,为什么要关心确切的类型?
可以像这样通过num_traits::PrimInt
绑定类型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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.