Rust 如何传递已实现特定特性的结构实例?
我正在尝试为一个方法编写一个正确的签名,该方法通过引用将对象作为输入。假设对象是实现某个特性的结构的实例Rust 如何传递已实现特定特性的结构实例?,rust,Rust,我正在尝试为一个方法编写一个正确的签名,该方法通过引用将对象作为输入。假设对象是实现某个特性的结构的实例 impl MyStruct { pub fn create_proof<E: Engine>(&self, C: &Circuit<E>, pk: &Parameters<E>) -> Proof<E> { unimplemented!() } } 为什么会发生此错误以及如何修复它
impl MyStruct {
pub fn create_proof<E: Engine>(&self, C: &Circuit<E>, pk: &Parameters<E>) -> Proof<E> {
unimplemented!()
}
}
为什么会发生此错误以及如何修复它?我不允许修改绑定到trait
电路
所在的mylib
的所有内容。我所能做的就是写正确的签名。该项目的整个代码太庞大和复杂,我认为共享它不是一个好主意。尝试将实现电路的结构也作为泛型:
pub fn create_proof<C, E>(&self, c: &C, pk: &Parameters<E>) -> Proof<E>
where
C: Circuit<E>,
E: Engine,
{
unimplemented!()
}
pub fn创建证明(&self,c:&c,pk:&Parameters)->proof
哪里
C:电路,
E:发动机,
{
未执行!()
}
尝试使实现回路的结构也成为通用类型:
pub fn create_proof<C, E>(&self, c: &C, pk: &Parameters<E>) -> Proof<E>
where
C: Circuit<E>,
E: Engine,
{
unimplemented!()
}
pub fn创建证明(&self,c:&c,pk:&Parameters)->proof
哪里
C:电路,
E:发动机,
{
未执行!()
}
请查看如何创建一个,然后查看您的问题以将其包括在内。我们无法说出代码中存在哪些板条箱、类型、特征、字段等。例如,MyStruct
、引擎
、参数
和证明
都是未定义的。如果不需要它们来重现问题,请删除它们。否则,将它们最小化并提供它们。试着制造一些能再现你在网络上的错误的东西,或者你可以在一个全新的货运项目中再现它。“还有。”谢普马斯特谢谢你提供的信息。但我发现我的问题很清楚,可以理解和回答。简短而明显的问题比完整而复杂的问题好。结果,我得到了快速而满意的回答。无需向Stackoverflow收取过多费用。@Formal但请不要回滚编辑,因为编辑是有原因的,例如,…
不是有效的锈迹代码,也不需要(省去点也可以,何必麻烦使用点)。其次,可以将/…
作为方法内容编写,但未实现!()
正是为了这个目的。接下来,由于某种原因,
标记也在那里。请避免再次回滚。@hellow在这个评论之后,我假设您确切地知道
标记是如何工作的-也就是说none
使用分配给标记的语言,而lang none
使用的语言none可能正是您在本文中想要的case@msrd0你说得对,但是由于没有语法突出显示,它将与lang none
做相同的事情。从技术上说你是对的。请随时更正帖子。请回顾如何创建一个新的,然后你的问题,包括它。我们无法说出代码中存在哪些板条箱、类型、特征、字段等。例如,MyStruct
、引擎
、参数
和证明
都是未定义的。如果不需要它们来重现问题,请删除它们。否则,将它们最小化并提供它们。试着制造一些能再现你在网络上的错误的东西,或者你可以在一个全新的货运项目中再现它。“还有。”谢普马斯特谢谢你提供的信息。但我发现我的问题很清楚,可以理解和回答。简短而明显的问题比完整而复杂的问题好。结果,我得到了快速而满意的回答。无需向Stackoverflow收取过多费用。@Formal但请不要回滚编辑,因为编辑是有原因的,例如,…
不是有效的锈迹代码,也不需要(省去点也可以,何必麻烦使用点)。其次,可以将/…
作为方法内容编写,但未实现!()
正是为了这个目的。接下来,由于某种原因,
标记也在那里。请避免再次回滚。@hellow在这个评论之后,我假设您确切地知道
标记是如何工作的-也就是说none
使用分配给标记的语言,而lang none
使用的语言none可能正是您在本文中想要的case@msrd0你说得对,但是由于没有语法突出显示,它将与lang none
做相同的事情。从技术上说你是对的。请随意更正帖子。