Rust 运算符重载
使用 Rust 的 + 运算符和 * 运算符,可以像对任何内置数值类型一样对 Complex 进行加法运算和乘法运算.
z = z * z + c;
你可以让自己的类型支持算术运算符和其他运算符,只要实现一些内置特型即可。这叫作运算符重载,其效果跟 C++、C#、Python 和 Ruby 中的运算符重载很相似。
算术运算符与按位运算符
在 Rust 中,表达式 a + b 实际上是 a.add(b) 的简写形式,也就是对标准库中 std::ops::Add 特型的 add 方法的调用。
附件
运算符重载的特型汇总表
类别 | 特型 | 运算符 |
---|---|---|
一元运算符 | std::ops::Neg std::ops::Not |
-x !x |
算术运算符 | std::ops::Add std::ops::Sub std::ops::Mul std::ops::Div std::ops::Rem |
x + y x - y x * y x / y x % y |
按位运算符 | std::ops::BitAnd std::ops::BitOr std::ops::BitXor std::ops::Shl std::ops::Shr |
x & y `x |
复合赋值算术运算符 | std::ops::AddAssign std::ops::SubAssign std::ops::MulAssign std::ops::DivAssign std::ops::RemAssign |
x += y x -= y x *= y x /= y x %= y |
复合赋值按位运算符 | std::ops::BitAndAssign std::ops::BitOrAssign std::ops::BitXorAssign std::ops::ShlAssign std::ops::ShrAssign |
x &= y `x |
比较 | std::cmp::PartialEq std::cmp::PartialOrd |
x == y 、x != y x < y 、x <= y 、x > y 、x >= y |
索引 | std::ops::Index std::ops::IndexMut |
x[y] 、&x[y] x[y] = z 、&mut x[y] |
评论