[英]Cannot implement trait for struct in module
感谢您抽出宝贵的时间阅读我的问题。 我到处都在寻找问题的答案,包括生锈的文档,但无济于事。 如果有人可以告诉我正在发生的事情,或者甚至向我指出正确的方向,那将是很好的。
这就是问题所在。
我有一个模块。 在该模块内部,我有一个结构和一个特征。 我想在结构上为此特征编写一个实现。 但是,执行完此操作后,我无法调用实现内部定义的函数,因此不断出现以下错误。
错误:类型`my_module :: a_struct`在名为`sound`的作用域中未实现任何方法
这是生成此错误的代码。
非常感谢您对此问题的见解。
mod my_module {
pub struct a_struct;
pub trait a_trait {
pub fn sound(&self);
}
pub impl a_trait for a_struct {
pub fn sound(&self) {
println!("a sound");
}
}
}
fn main() {
let a_struct = ::my_module::a_struct;
a_struct.sound();
}
嗯,我很新也,但问题是,你的主要程序只能看到a_struct
从::my_module::a_struct
,并没有看到a_trails
您已经导出。
您将不得不做类似的事情。
use my_module::a_trait;
mod my_module {
pub struct a_struct;
pub trait a_trait {
fn sound(&self);
}
impl a_trait for a_struct {
fn sound(&self) {
println!("a sound");
}
}
}
fn main() {
let my_struct = ::my_module::a_struct;
my_struct.sound();
}
您需要use my_module::my_trait;
将特征纳入范围use my_module::my_trait;
。 另外,您还有很多不必要的可见性修饰符( pub
)。 这是一个围栏的工作示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.