我看到它std::convert::Into有一个实现任何实现的东西std::convert::From:
impl<T, U> Into<U> for T where U: From<T>
Run Code Online (Sandbox Code Playgroud)
有更具体的实现From,虽然Into目前只有3个特定的实现,这使得它似乎是From默认实现的主流决定.我确信有些时候我只想实现Into而不是From,但我没有看到它们.
给定以下结构:
struct Vector3D {
x: f32,
y: f32,
z: f32
}
Run Code Online (Sandbox Code Playgroud)
*当右边是a时Vector3D,我想重载它的运算符来做一个点积,当RHS是a时,我想重做元素乘法f32.我的代码看起来像这样:
// Multiplication with scalar
impl Mul<f32, Vector3D> for Vector3D {
fn mul(&self, f: &f32) -> Vector3D {
Vector3D {x: self.x * *f, y: self.y * *f, z: self.z * *f}
}
}
// Multiplication with vector, aka dot product
impl Mul<Vector3D, f32> for Vector3D {
fn mul(&self, other: &Vector3D) -> f32 {
self.x * other.x + self.y * other.y + self.z * other.z …Run Code Online (Sandbox Code Playgroud)