- Rust Programming By Example
- Guillaume Gomez Antoni Boucher
- 243字
- 2021-07-02 19:13:00
Associated types
We can also have types in a trait that need to be specified. For instance, let's implement the Add trait from the standard library on our Point type that we declared earlier, which allows us to use the + operator on our own types:
use std::ops::Add; impl Add<Point> for Point { type Output = Point; fn add(self, point: Point) -> Self::Output { Point { x: self.x + point.x, y: self.y + point.y, } } }
The first line is to import the Add trait from the standard library so that we can implement it on our type. Here we specify that the associated Output type is Point. Associated types are most useful for return types. Here, the Output of the add() method is the associated Self::Output type.
Now, we can use the + operator on Points:
let p1 = Point { x: 1, y: 2 }; let p2 = Point { x: 3, y: 4 }; let p3 = p1 + p2;
Having to specify the output parameter with an associated type (instead of setting it to Self) gives us more flexibility. For instance, we could implement the scalar product for the * operator, which takes two Points and returns a number.
You can find all the operators that can be overloaded on this page, at https://doc.rust-lang.org/stable/std/ops/index.html.
Since Rust 1.20, Rust also supports associated constants in addition to associated types.
- 普通高校中文學(xué)科基礎(chǔ)教材古典文獻(xiàn)學(xué)基礎(chǔ)
- 胡華文集(第一卷)
- 圖書館學(xué)是什么
- 網(wǎng)絡(luò)學(xué)術(shù)信息老化及應(yīng)對管理
- 民國文獻(xiàn)辨?zhèn)螌W(xué)研究
- 醫(yī)學(xué)文獻(xiàn)管理
- 山東圖書館學(xué)史研究
- 海源閣史
- 高校博物館發(fā)展研究:以上海地區(qū)為中心
- 圖書館合理分享著作權(quán)利益訴求研究
- 守望與思索:人文清華講壇實(shí)錄III
- 當(dāng)代博物館的新角色與新視野
- 李一氓文存(第一卷):存在集·存在集續(xù)編
- 武大老照片
- 梁思成林徽因影像與手稿珍集