操作符
操作符
一元操作符
顾名思义,一元操作符是专门对一个
-
: 取负,专门用于数值类型。*
: 解引用。这是一个很有用的符号,和Deref
(DerefMut
)这个trait 关联密切。!
: 取反。取反操作相信大家都比较熟悉了,不多说了。有意思的是,当这个操作符对数字类型使用的时候,会将其每一位都置反!也就是说,你对一个1u8
进行!
的话你将会得到一个254u8
。&
和&mut
: 租借,borrow。向一个owner 租借其使用权,分别是租借一个只读使用权和读写使用权。
二元操作符
算数操作符
算数运算符都有对应的std::ops
下:
+
: 加法。实现了std::ops::Add
。-
: 减法。实现了std::ops::Sub
。*
: 乘法。实现了std::ops::Mul
。/
: 除法。实现了std::ops::Div
。%
: 取余。实现了std::ops::Rem
。
位运算符
和算数运算符差不多的是,位运算也有对应的
&
: 与操作。实现了std::ops::BitAnd
。|
: 或操作。实现了std::ops::BitOr
。^
: 异或。实现了std::ops::BitXor
。<<
: 左移运算符。实现了std::ops::Shl
。>>
: 右移运算符。实现了std::ops::Shr
。
比较运算符
比较运算符其实也是某些std::cmp::PartialEq
和std::cmp::PartialOrd
其中,==
和!=
实现的是PartialEq
。而,<
、>
、>=
、<=
实现的是PartialOrd
。
类型转换运算符
其实这个并不算运算符,因为他是个单词
fn avg(vals: &[f64]) -> f64 {
let sum: f64 = sum(vals);
let num: f64 = len(vals) as f64;
sum / num
}