即使使用:: from,我也得到了预期的类型参数错误[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了即使使用:: from,我也得到了预期的类型参数错误[重复]相关的知识,希望对你有一定的参考价值。

使用此功能,

fn incr<A: std::ops::AddAssign>(mut foo: A) -> A 
    foo += A::from(1);
    foo

我正在,

error[E0308]: mismatched types
 --> src/lib.rs:2:20
  |
1 | fn incr<A: std::ops::AddAssign>(mut foo: A) -> A 
  |         - this type parameter
2 |     foo += A::from(1);
  |                    ^ expected type parameter `A`, found integer
  |
  = note: expected type parameter `A`
                       found type `integer`
  = help: type parameters must be constrained to match other types
  = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters

我该如何进行这项工作?

答案

您需要指定A具有特征范围,要求它实现From<u8>

fn incr<A: std::ops::AddAssign + From<u8> > (mut foo: A) -> A 
    foo += A::from(1);
    foo

以上是关于即使使用:: from,我也得到了预期的类型参数错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:参数“x”的类型不正确(预期为cupy.core.core.ndarray,得到了numpy.ndarray)

泛型类型“结果”专门具有太多类型参数(得到 2,但预期为 1)

TypeScript 2.6.1错误TS2554:预期2-3个参数,但得到1

无法将“字符串”类型的值转换为预期的参数类型“数据”

为啥即使我修改了 lock 变量,我也会得到一个无限的 while 循环? [复制]

javascript indexOf无法按预期使用数组