Joh*_*ess 6 operator-overloading rust
我可以重载[]运算符Index以返回引用,但我不知道是否有重载运算符可以分配给对象。
这就是我想要做的:
point[0] = 9.9;
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我可以做的(获取值):
use std::ops::Index;
#[derive(Debug, Clone, Copy)]
pub struct Vec3 {
e: [f32; 3],
}
impl Index<usize> for Vec3 {
type Output = f32;
fn index<'a>(&'a self, i: usize) -> &'a f32 {
&self.e[i]
}
}
fn main() {
let point = Vec3 { e: [0.0, 1.0, 3.0] };
let z = point[2];
println!("{}", z);
}
Run Code Online (Sandbox Code Playgroud)
您正在使用Index,它在其文档中说明了这一点:
如果请求可变值,
IndexMut则改为使用。
use std::ops::{Index, IndexMut};
#[derive(Debug, Clone, Copy)]
pub struct Vec3 {
e: [f32; 3],
}
impl Index<usize> for Vec3 {
type Output = f32;
fn index<'a>(&'a self, i: usize) -> &'a f32 {
&self.e[i]
}
}
impl IndexMut<usize> for Vec3 {
fn index_mut<'a>(&'a mut self, i: usize) -> &'a mut f32 {
&mut self.e[i]
}
}
fn main() {
let mut point = Vec3 { e: [0.0, 1.0, 3.0] };
point[0] = 99.9;
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
IndexMut)| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |