Module 我能';t在同一个文件中没有每个特征和含义;如何放置在单独的文件中?
我在顶层文件中有一个struct、trait和implModule 我能';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 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
的确切内容吗?。