如何传递已实现特定特征的结构的实例?

时间:2019-01-22 11:28:02

标签: rust

我正在尝试为通过引用将对象作为输入的方法编写正确的签名。假定该对象是实现特定特征的结构的实例。

KeyboardAvoidingView

impl MyStruct { pub fn create_proof<E: Engine>(&self, C: &Circuit<E>, pk: &Parameters<E>) -> Proof<E> { unimplemented!() } } 被定义为类似Circuit的特征,并且内部具有已实现的方法。

编译项目时出现错误:

trait Circuit<E: Engine>

为什么会发生此错误以及如何解决?我不允许修改绑定到特征the trait `mylib::Circuit` cannot be made into an object note: method `circuit_method` has generic type parameters 所在的mylib的所有内容。我被允许做所有正确的签名。该项目的整个代码过于庞大和棘手,我认为共享它不是一个好主意。

1 个答案:

答案 0 :(得分:2)

尝试将实现Circuit的结构也设为通用类型:

pub fn create_proof<C, E>(&self, c: &C, pk: &Parameters<E>) -> Proof<E>
where
    C: Circuit<E>,
    E: Engine,
{
    unimplemented!()
}