ржавчина - модуль импорта проблем - PullRequest
0 голосов
/ 23 апреля 2020

Я обнаружил странную ошибку, препятствующую импорту одного из моих файлов. Это мой каталог sr c

src/
    functions.rs
    main.rs
    unit_test.rs

Вот это unit_test.rs

mod functions;

#[cfg(test)] // only compiles on test
// make module f_test
mod f_test{
    // mark function as test
    #[test]

    #[should_panic]
    fn test_basic() {
        assert_eq!();

        panic!("oh no");
    }

    #[test]
    fn test_add(){ 
        assert_eq!(functions::add(1,2), 1 + 2);
    }

    #[test]
    #[should_panic]
    fn test_bad_add(){
        assert_eq!(functions::add(1,2), 1 + 2);
    }
}

Когда Я пытаюсь запустить автомобиль go test, я получаю

[vinessa@komputilo unitTest]$ cargo test
   Compiling unitTest v0.1.0 (/home/vinessa/Dev/Rust/unitTest)
error[E0583]: file not found for module `functions`
 --> src/unit_test.rs:1:5
  |
1 | mod functions;
  |     ^^^^^^^^^
  |
  = help: name the file either unit_test/functions.rs or unit_test/functions/mod.rs inside the directory "src"

Странная вещь, если я добавлю "mod functions;" На main.rs автомобиль go не будет жаловаться на этот файл, только для unit_test.rs

Я заблудился, пожалуйста, помогите

1 Ответ

1 голос
/ 23 апреля 2020

Я думаю, что вы хотите объявить mod functions в main.rs:

mod unit_test;
mod functions; // declare this module here

fn main() {
    println!("Hello, world!");
}

Я думаю, что вы хотите это в unit_test.rs:

#[cfg(test)] // only compiles on test
// make module f_test
mod f_test{
    use crate::functions; // use module here

    // mark function as test
    #[test]
    #[should_panic]
    fn test_basic() {
        assert_eq!(1, 1);

        panic!("oh no");
    }

    #[test]
    fn test_add(){ 
        assert_eq!(functions::add(1,2), 1 + 2);
    }

    #[test]
    #[should_panic]
    fn test_bad_add(){
        assert_eq!(functions::add(1,2), 1 + 2);
    }
}

Кроме того, ваш #[should_panic] неверно в существующем виде.

Обязательная ссылка: https://doc.rust-lang.org/book/ch07-02-defining-modules-to-control-scope-and-privacy.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...