Closed
Description
For code like this:
#[derive(Debug, Clone, Copy)]
pub struct Vec3 {
pub x: f32,
pub y: f32,
pub z: f32,
}
impl std::ops::Add<Vec3> for Vec3 {
type Output = Vec3;
const fn add(self, b: Vec3) -> Self::Output {
Vec3 {
x: self.x + b.x,
y: self.y + b.y,
z: self.z + b.z,
}
}
}
This currently emits:
error[E0379]: functions in traits cannot be declared const
--> src\main.rs:10:5
|
10 | const fn add(self, b: Vec3) -> Self::Output {
| ^^^^^ functions in traits cannot be const
error: aborting due to previous error
For more information about this error, try `rustc --explain E0379`.
It would be extremely useful if we could have const fn in trait implementation (especially for operator overloading). And I saw this is also mentioned in the RFC 0911.