我在官方 Rust 檔案中找到了以下代碼,我想知道 中的通用宣告的目的mixup<V, W>:
impl<T, U> Point<T, U> {
fn mixup<V, W>(self, other: Point<V, W>) -> Point<T, W> {
Point {
x: self.x,
y: other.y,
}
}
}
我了解泛型定義impl<T, U>用于確保 Point 結構的實作匹配所有泛型型別。但是,mixup<V, W>bit中的泛型定義的目的是什么?由于回傳型別和引數泛型已經明確定義,這似乎是毫無意義的代碼,那么它還有什么其他用途呢?檔案沒有解決這個問題。
這是檔案的鏈接:Rust 官方檔案第 10 章
uj5u.com熱心網友回復:
答案在您鏈接的文本中:
該方法將另一個 Point 作為引數,它可能與我們呼叫 mixup 的 self Point 具有不同的型別。該方法使用來自自身 Point(型別 T)的 x 值和來自傳入 Point(型別 W)的 y 值創建一個新的 Point 實體。
型別 V 和 W 可能與 T 和 U 不同。mixup采用 a Point<T,U>(即 self)和 a Point<V,W>,并回傳 a Point<T,W>,用y:U屬性替換該y:W屬性。該示例代碼顯示了它在做什么。嘗試洗掉<V, W>,你會看到問題。
當你說“明確定義了回傳型別和引數泛型”時,它們只是因為那個而被定義<V,W>。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348574.html
