繁体   English   中英

无法在模块中实现结构特征

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM