【发布时间】:2022-01-06 04:55:25
【问题描述】:
我是 Rust 的新手,我需要一些关于如何在 Rust 中为一个参数处理多种类型的指导。我什至不知道这是否可能。
我有一个函数可以进行大量计算,并且其某些指令可能会根据参数的类型而有所不同。
在 Python 中,它将显示为:
def foo(bar):
# Do a bunch of computations
if isinstance(bar, TYPE_A):
# Do this
elif isinstance(bar, TYPE_B):
# Do that
我什至不知道这在 Rust 中是否可行,甚至不推荐。函数体非常丰富,在函数体中使用 match 语句处理这种基于类型的条件似乎比使用支持两种不同类型的两个非常相似的函数更清晰。
我不是在这里寻找泛型。实际上在我的例子中,Type_A 是一个 Rust ndarray 实例,TYPE_B 将是一个自定义的 struct。
【问题讨论】:
-
我猜你想使用枚举。
enum Foo { A(i32), B(String), ... }.. 类型的内部值是实际的有效载荷。通过一些模式匹配,您可以从枚举中获取正确的值并做任何您想做的事情。在幕后,这就像 C 中的类型联合。
标签: rust