我不能在同一个文件中包含所有特征和隐含内容。如何放置在单独的文件中?

时间:2019-01-13 11:29:21

标签: module rust access-modifiers

我在顶层文件中有一个结构,一个特征和一个impl。

ini_set('display_errors', 1);
error_reporting(E_ALL);

$url = 'http://***.***.***.***:8080/api_v1/oauth/token';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$response = curl_exec($ch);

我想移动特征并将其隐含到名为struct Model {} trait TsProperties { fn create_ar_x_matrix(&self); } impl TsProperties for Model { fn create_ar_x_matrix(&self){} } 的单独文件中。在主文件中,我有:

test.rs

在测试中,我有:

mod test

当我实例化结构时,Intellisense不会启动use crate::Model; 。如果代码在create_ar_x_matrix中。

我该如何解决?

如果我添加main.rs,则会出现此错误:

pub

如果我在主文件中的结构上使用25 | pub impl TsProperties for Model { | ^^^ `pub` not permitted here because it's implied 并将特质放在单独的文件中:

pub

1 个答案:

答案 0 :(得分:1)

您需要导入特征。

test.rs中:

use crate::Model;

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

impl TsProperties for Model {
    fn create_ar_x_matrix(&self){}
}

main.rs中:

mod test;
use self::test::TsProperties;

struct Model {}

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

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