Trait 中的函数 return 类型重载
Function return type overloading in Trait
我正在编写一个特征函数,输出标量 T 或 NdArray ArrayBase<ViewRepr<&T>, I>
。我知道 Rust 不支持函数重载。我遇到过不同的解决方案,例如输出元组(第一个元素是标量,第二个是数组)。你觉得这个解决方案在 Rust 中是惯用的吗?或者您知道更好的解决方法吗?
我目前的解决方案是创建两个不同的特征,一个实现输出标量的函数,另一个实现输出数组的特征中的函数。
我正在寻找更好的解决方案,因为它会大大减轻我的代码库。
您可以在输出特征中使用 associated type:
pub trait MyTrait {
type Output;
fn execute(&self) -> Self::Output;
}
...
struct MyCompute;
impl MyTrait for MyCompute {
type Output = u64;
fn compute(&self) -> Self::Output { ... }
}
我正在编写一个特征函数,输出标量 T 或 NdArray ArrayBase<ViewRepr<&T>, I>
。我知道 Rust 不支持函数重载。我遇到过不同的解决方案,例如输出元组(第一个元素是标量,第二个是数组)。你觉得这个解决方案在 Rust 中是惯用的吗?或者您知道更好的解决方法吗?
我目前的解决方案是创建两个不同的特征,一个实现输出标量的函数,另一个实现输出数组的特征中的函数。
我正在寻找更好的解决方案,因为它会大大减轻我的代码库。
您可以在输出特征中使用 associated type:
pub trait MyTrait {
type Output;
fn execute(&self) -> Self::Output;
}
...
struct MyCompute;
impl MyTrait for MyCompute {
type Output = u64;
fn compute(&self) -> Self::Output { ... }
}