簡體   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