小编Tud*_*abo的帖子

如何在 Rust 中返回自动取消引用的引用

假设我有以下结构:

struct Vector {
    data: [f32; 2]
}
Run Code Online (Sandbox Code Playgroud)

实现 Index 特征很容易:

impl IndexMut<usize> for Vector {
    fn index_mut(&mut self, index: usize) -> &mut Self::Output {
        &mut self.data[index]
    }
}
Run Code Online (Sandbox Code Playgroud)

我也有这个实现:

impl Vector {
    fn x(&mut self) -> &mut T {
        &mut self.data[0]
    }
    fn y....
}
Run Code Online (Sandbox Code Playgroud)

从技术上讲,我可以做到这一点,但每次我想实际设置 x() 的值时,我都需要取消引用它:可以*v.x() = 7工作,但我v.x() = 7也想工作。

当我尝试第二个时,我收到错误:consider dereferencing here to assign to the mutably borrowed value: '*',我认为这是有道理的,但发生这种情况很奇怪,因为 IndexMut 返回与我的 x() 函数返回的相同的可变引用。

所以我的问题是:为什么 IndexMut 特征只适用于 do v[0] = …

indexing struct reference traits rust

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

标签 统计

indexing ×1

reference ×1

rust ×1

struct ×1

traits ×1