我有这个简单的通用函数:
fn add_five<T: Into<i32>>(t: T) -> i32 {
5_i32 + t.into()
}
我想使用From
特性来表达,而不是Into
特性,但是我的重构尝试:
fn add_five<T, i32: From<T>>(t: T) -> i32 {
5_i32 + <i32 as From<T>>::from(t)
}
引发此编译错误:
error[E0277]: cannot add `i32` to `i32`
--> src/main.rs:24:11
|
| 5_i32 + <i32 as From<T>>::from(t)
| ^ no implementation for `i32 + i32`
|
= help: the trait `Add<i32>` is not implemented for `i32`
这非常令人困惑,因为标准库中确实有一个
impl Add<i32> for i32
,那么问题到底出在哪里呢?