【发布时间】:2021-11-06 23:04:03
【问题描述】:
我有一个代码,我想在其中创建一个库的包装器,以使其与我的其他代码的工作原理相同。为了避免编写数百个结构,我正在创建一个通用结构(Worker)。但我正在使用该函数对其进行配置,并将该信息作为枚举传递:
fn configure(config: Config) -> Worker<T> {
match config {
some_config => Worker<some_type>,
_ => {...}
}
由于我已经将信息作为枚举传递,我想避免将类型参数传递给函数,但显然 rust 抱怨因为 T 没有定义。
有没有办法让 rust 推断出某些东西的返回泛型的类型?我虽然也使用过宏,但我不知道它是否是正确的解决方案。知道如何解决这个问题吗? 提前感谢您的宝贵时间!
【问题讨论】:
-
我没有完全理解这个问题。如果你说它返回
Worker<T>,那么some_type总是必须是T,你应该提前知道。如果你希望它返回不同的类型,enum 或 dyn 几乎是唯一的选择。