作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以用 Index
重载 []
运算符以返回一个 ref,但我不知道我是否有重载运算符来分配给对象。
这就是我想要做的:
point[0] = 9.9;
这是我目前能做的(获取一个值):
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);
}
最佳答案
您正在使用 Index
,在其文档中这样说:
If a mutable value is requested,
IndexMut
is used instead.
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;
}
另见:
IndexMut
特性创建新值)关于rust - 有没有办法重载索引赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49593793/
我是一名优秀的程序员,十分优秀!