我正在尝试为通过引用将对象作为输入的方法编写正确的签名。假定对象是实现特定特征的结构的实例。
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
为什么会发生此错误,以及如何解决?我不允许修改绑定(bind)到
mylib
的Circuit
的所有内容。我被允许做所有正确的签名。该项目的整个代码过于庞大和棘手,我认为共享它不是一个好主意。 最佳答案
尝试将实现Circuit
的结构也设为通用类型:
pub fn create_proof<C, E>(&self, c: &C, pk: &Parameters<E>) -> Proof<E>
where
C: Circuit<E>,
E: Engine,
{
unimplemented!()
}
关于rust - 如何传递已实现某些特征的结构的实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54307276/