Хобрук: Ваш путь к мастерству в программировании

У меня не может быть всех признаков и имплицитов в одном файле; как поместить в отдельный файл?

У меня есть структура, черта и impl в файле верхнего уровня.

struct Model {}

trait TsProperties {
    fn create_ar_x_matrix(&self);
}

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

Я хочу переместить черту и impl в отдельный файл с именем test.rs. В основном файле у меня есть:

mod test

В тесте у меня есть:

use crate::Model;

Когда я создаю экземпляр структуры, Intellisense не принимает create_ar_x_matrix. Если код находится в main.rs, это так.

Как мне решить эту проблему?

Если я добавлю pub, я получу такую ​​ошибку:

25 | pub impl TsProperties for Model {                                                                                                                        
   | ^^^ `pub` not permitted here because it's implied 

если я использую pub в структуре в основном файле и помещаю признак в отдельный файл:

error[E0599]: no method named `create_ar_x_matrix` found for type `Model` in the current scope                                                                         
   --> src/main.rs:353:12                                                                                                                                                   
    |                                                                                                                                                                       
64  | pub struct Model {                                                                                                                                               
    | --------------------- method `create_ar_x_matrix` not found for this    

  • используйте pub перед struct и trait, а не impl 13.01.2019
  • intellisense не обрабатывает create_ar_x_matrix - это просто проблема IDE или вы получаете фактическую ошибку компиляции? 13.01.2019
  • Смотрите обновлено .... все еще не работает 13.01.2019
  • сделайте свой trait pub и включите use crate::TsProperties; тоже 13.01.2019
  • Не могли бы вы вставить точное содержимое main.rs и test.rs? 13.01.2019

Ответы:


1

Вам нужно импортировать черту.

In test.rs:

use crate::Model;

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

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

In main.rs:

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

struct Model {}

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

Обратите внимание, что Model не обязательно должен быть публичным, но черта должна быть. Это потому, что все, что есть в родительском модуле, автоматически отображается в дочерних модулях.

13.01.2019
Новые материалы

Как симулировать серию пенальти на Python с помощью симуляции Монте-Карло, часть 1: генерация функций
Серия пенальти была огромным испытанием во время чемпионата мира по футболу. Они вызвали много споров в социальных сетях и новостных агентствах. Даже финальный матч турнира решался по..

AST для разработчиков JavaScript
TL; DR Эта статья - мое выступление на недавно состоявшейся конференции Stockholm ReactJS Meetup. Вы можете посмотреть слайды здесь..

5 проектов на Python, которые нужно создать прямо сейчас!
Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..