我正在使用我在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}}类型。