如何在Rust中模拟通用动态调度?

时间:2017-08-25 11:25:46

标签: generics rust dynamic-dispatch

我正在使用我在F#中学到的技巧来模拟存在类型,我想知道这是否适用于Rust:

'c

gist

双界面层隐藏第一个界面后面的合成中的中间SuperArrowCompose<'a,'b>存在类型(顶部注释中的'r)。

这在F#中起作用的原因是它可以在运行时动态生成error[E0038]: the trait `SuperArrowCompose` cannot be made into an object --> existential.rs:57:13 | 57 | Compose(Box<SuperArrowCompose<A,B>>), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `SuperArrowCompose` cannot be made into an object | = note: method `eval` has generic type parameters 特定实现所需的代码。这在Rust中是不可能的,它不允许我有一个具有泛型类型参数的特征:

C

它必须是通用的,允许它在返回类型上是通用的,但同时它需要是动态的,以隐藏连接这两个函数的特定{{1}}类型。

0 个答案:

没有答案