小编ano*_*_13的帖子

如何为不同的RHS类型和返回值重载运算符?

给定以下结构:

struct Vector3D {
    x: f32,
    y: f32,
    z: f32
}
Run Code Online (Sandbox Code Playgroud)

*当右边是a时Vector3D,我想重载它的运算符来做一个点积,当RHS是a时,我想重做元素乘法f32.我的代码看起来像这样:

// Multiplication with scalar
impl Mul<f32, Vector3D> for Vector3D {
    fn mul(&self, f: &f32) -> Vector3D {
        Vector3D {x: self.x * *f, y: self.y * *f, z: self.z * *f} 
    }   
}
// Multiplication with vector, aka dot product
impl Mul<Vector3D, f32> for Vector3D {
    fn mul(&self, other: &Vector3D) -> f32 {
        self.x * other.x + self.y * other.y + self.z * other.z …
Run Code Online (Sandbox Code Playgroud)

operator-overloading rust

19
推荐指数
2
解决办法
3421
查看次数

为Rust newtypes自动实现封闭类型的特征(带有一个字段的元组结构)

在Rust中,可以创建只有一个字段的元组结构,如下所示:

struct Centimeters(i32);
Run Code Online (Sandbox Code Playgroud)

我想这样做基本的算术有Centimeters没有与模式匹配,每次提取他们的"内心"的价值观,并没有实现Add,Sub...特点和运算符重载.

我想做的是:

let a = Centimeters(100);
let b = Centimeters(200);
assert_eq!(a + a, b);
Run Code Online (Sandbox Code Playgroud)

struct traits rust newtype

16
推荐指数
2
解决办法
3257
查看次数

标签 统计

rust ×2

newtype ×1

operator-overloading ×1

struct ×1

traits ×1