Module 我能';t在同一个文件中没有每个特征和含义;如何放置在单独的文件中?

Module 我能';t在同一个文件中没有每个特征和含义;如何放置在单独的文件中?,module,rust,access-modifiers,Module,Rust,Access Modifiers,我在顶层文件中有一个struct、trait和impl struct Model {} trait TsProperties { fn create_ar_x_matrix(&self); } impl TsProperties for Model { fn create_ar_x_matrix(&self){} } 我想将trait和impl移到一个名为test.rs的单独文件中。在主文件中,我有: mod test 在测试中,我有: use crate

我在顶层文件中有一个struct、trait和impl

struct Model {}

trait TsProperties {
    fn create_ar_x_matrix(&self);
}

impl TsProperties for Model {
    fn create_ar_x_matrix(&self){}
}
我想将trait和impl移到一个名为
test.rs
的单独文件中。在主文件中,我有:

mod test
在测试中,我有:

use crate::Model;
当我实例化该结构时,Intellisense不会拾取
create\u ar\u x\u matrix
。如果代码位于
main.rs
中,则会显示

我如何解决这个问题

如果我添加
pub
我会得到以下错误:

25 |模型{
|^^^`pub`此处不允许,因为它是隐含的
如果我在主文件的结构上使用
pub
,并将trait放在单独的文件中:

error[E0599]:在当前作用域中找不到类型为“Model”的名为“create_ar_x_matrix”的方法
-->src/main.rs:353:12
|                                                                                                                                                                       
64 |发布结构模型{
|--------------未找到此方法的“创建\u ar\u x\u矩阵”

您需要导入特征

test.rs
中:

use crate::Model;

pub trait TsProperties {
    fn create_ar_x_matrix(&self);
}

impl TsProperties for Model {
    fn create_ar_x_matrix(&self){}
}
mod test;
use self::test::TsProperties;

struct Model {}

fn main() {
    let model = Model {};
    model.create_ar_x_matrix();
}
main.rs
中:

use crate::Model;

pub trait TsProperties {
    fn create_ar_x_matrix(&self);
}

impl TsProperties for Model {
    fn create_ar_x_matrix(&self){}
}
mod test;
use self::test::TsProperties;

struct Model {}

fn main() {
    let model = Model {};
    model.create_ar_x_matrix();
}

请注意,
Model
不需要是公共的,但是trait需要。这是因为父模块中的任何内容在子模块中都会自动可见。

在struct和trait之前使用pub,而不是implicIntelliSense,它不会拾取create\u ar\u x\u矩阵——这只是一个IDE问题,还是您得到了一个实际的编译错误?请参阅更新的…仍然没有t working将您的trait发布并包括
使用板条箱::TsProperties;
too您可以粘贴
main.rs
test.rs
的确切内容吗?。