Struct 无法为模块中的结构实现trait

Struct 无法为模块中的结构实现trait,struct,scope,rust,traits,Struct,Scope,Rust,Traits,感谢您抽出时间阅读我的问题。我已经到处寻找我的问题的答案,包括铁锈文件,但都没有找到。如果有人能告诉我发生了什么,甚至能给我指出正确的方向,那就太好了 这就是问题所在 我有一个模块。在模块内部,我有一个结构和一个特征。我想在结构上为这个特性编写一个实现。但是,在执行此操作之后,我无法调用在实现内部定义的函数,我不断得到以下错误 错误:键入'my_module::a_struct'在名为'sound'的范围内未实现任何方法。 下面是生成此错误的代码 我们非常感谢您对这个问题的任何见解 mod m

感谢您抽出时间阅读我的问题。我已经到处寻找我的问题的答案,包括铁锈文件,但都没有找到。如果有人能告诉我发生了什么,甚至能给我指出正确的方向,那就太好了


这就是问题所在

我有一个模块。在模块内部,我有一个结构和一个特征。我想在结构上为这个特性编写一个实现。但是,在执行此操作之后,我无法调用在实现内部定义的函数,我不断得到以下错误

错误:键入'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_结构
::我的模块::a_结构
,而看不到你导出的
a_路径

你必须做一些类似的事情

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();
}

我也是个新手,但问题是你的主程序只能看到
中的
a_结构
::我的模块::a_结构
,而看不到你导出的
a_路径

你必须做一些类似的事情

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();
}

您需要使用
使用my_模块::my_trait将trait纳入范围。此外,还有许多不必要的可见性修饰符(
pub
)。playpen上的一个工作示例。

您需要使用
使用my_模块::my_trait。此外,还有许多不必要的可见性修饰符(
pub
)。playpen上的一个工作示例。

惯例说明:
AStruct
ATrait
。惯例说明:
AStruct
ATrait
。谢谢,我添加了
使用我的_模块::我的_特征行,现在一切正常。我添加了所有pub限定符以排除权限问题行,现在一切正常。我添加了所有pub限定符以排除权限问题。