繁体   English   中英

rust - 从具有特征的泛型函数返回类型

[英]rust - return type from generic function with traits

我试图了解通用函数在 Rust 中是如何工作的。 这是我的代码:

fn evaluate<T: std::ops::Mul>(portfolio: T, quote: T) -> T {
    portfolio * quote
}

我收到错误:

error[E0308]: mismatched types
  --> src/main.rs:10:5
   |
9  | fn evaluate<T: std::ops::Mul>(portfolio: T, quote: T) -> T {
   |                                                          - expected `T` because of return type
10 |     portfolio * quote
   |     ^^^^^^^^^^^^^^^^^ expected type parameter `T`, found associated type
   |
   = note: expected type parameter `T`
             found associated type `<T as std::ops::Mul>::Output`
   = note: you might be missing a type parameter or trait bound

我在做什么错?

锈不承担对类型的值乘法T总是导致类型的新值T 相反, Mul trait 有一个关联的类型Output ,它指定乘法的返回类型。 错误消息提到该类型为“找到关联类型<T as std::ops::Mul>::Output ”。 因此,最简单的解决方案是将函数的返回类型更改为关联类型:

fn evaluate<T: std::ops::Mul>(portfolio: T, quote: T) -> <T as std::ops::Mul>::Output {
    portfolio * quote
}

Output与输入类型不匹配的一个常见示例是将两个引用相乘——输出通常是一个拥有的类型,而不是再次引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM