W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Rust 允許有限形式的操作符重載。有一些操作符能夠被重載。為了支持一個(gè)類型之間特定的操作符,有一個(gè)你可以實(shí)現(xiàn)的特定的特征,然后重載操作符。
例如,可以用 Add 特征重載 + 操作符。
use std::ops::Add;
#[derive(Debug)]
struct Point {
x: i32,
y: i32,
}
impl Add for Point {
type Output = Point;
fn add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
fn main() {
let p1 = Point { x: 1, y: 0 };
let p2 = Point { x: 2, y: 3 };
let p3 = p1 + p2;
println!("{:?}", p3);
}
在 main 函數(shù)中,你可以在兩個(gè) Point之間使用 + 操作符,因?yàn)槲覀兛梢允褂?Point 的方法 Add<Output=Point>
。
有許多操作符可以以這種方式被重載,所有的關(guān)聯(lián)特征都在 std::ops
模塊中。看看完整列表的文檔?! ?/p>
這些特征的實(shí)現(xiàn)遵循一個(gè)模式。讓我們看看 Add 的更多細(xì)節(jié):
pub trait Add<RHS = Self> {
type Output;
fn add(self, rhs: RHS) -> Self::Output;
}
這里總共三種類型包括:impl Add for的類型,默認(rèn)為 Self 的 RSH,還有 Output。一個(gè)表達(dá)式 let z = x + y
,x 是 Self 類型,y 是 RSH 類型,還有 z 是 Self::Output 類型。
這可以讓你這樣做:
let p: Point = // ...
let x: f64 = p + 2i32;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: