我正在尝试为通过引用将对象作为输入的方法编写正确的签名。假定该对象是实现特定特征的结构的实例。
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
的所有内容。我被允许做所有正确的签名。该项目的整个代码过于庞大和棘手,我认为共享它不是一个好主意。
答案 0 :(得分:2)
尝试将实现Circuit
的结构也设为通用类型:
pub fn create_proof<C, E>(&self, c: &C, pk: &Parameters<E>) -> Proof<E>
where
C: Circuit<E>,
E: Engine,
{
unimplemented!()
}