相关疑难解决方法(0)

如何实现添加特征以引用结构?

我做了一个两元素Vector结构,我想重载+运算符.

我使我的所有函数和方法都采用引用而不是值,我希望+运算符以相同的方式工作.

impl Add for Vector {
    fn add(&self, other: &Vector) -> Vector {
        Vector {
            x: self.x + other.x,
            y: self.y + other.y,
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我尝试的变化,我要么遇到生命问题,要么输入不匹配.具体来说,这个&self论点似乎没有被视为正确的类型.

我已经看到了模板参数的例子上impl,以及Add,但他们只是导致不同的错误.

我发现如何为不同的RHS类型和返回值重载运算符?但即使我把一个use std::ops::Mul;放在顶部,答案中的代码也不起作用.

我正在使用rustc 1.0.0-nightly(ed530d7a3 2015-01-16 22:41:16 +0000)

我不接受"你只有两个字段,为什么要使用参考"作为答案; 如果我想要一个100元素结构怎么办?我会接受一个答案,证明即使有一个大的结构我也应该通过值传递,如果是这样的话(我认为不是这样).我有兴趣知道结构大小的一个好的经验法则并且通过值vs struct传递,但这不是当前的问题.

reference traits lifetime rust

40
推荐指数
2
解决办法
8676
查看次数

Rust 可以自动获取值的不可变引用吗?

我有一个结构体,其中实现了几个运算符:

use std::ops;

/// Vector of 3 floats
#[derive(Debug, Copy, Clone)]
pub struct Vec3 {
    pub x: f32,
    pub y: f32,
    pub z: f32,
}

/// Add operator
impl ops::Add<&Vec3> for &Vec3 {
    type Output = Vec3;

    #[inline(always)]
    fn add(self, rhs: &Vec3) -> Self::Output {
        Vec3 {
            x: self.x + rhs.x,
            y: self.y + rhs.y,
            z: self.z + rhs.z,
        }
    }
}

/// Subtract operator
impl ops::Sub<&Vec3> for &Vec3 {
    type Output = Vec3;

    #[inline(always)]
    fn sub(self, rhs: &Vec3) -> …
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
333
查看次数

标签 统计

rust ×2

lifetime ×1

reference ×1

traits ×1