2016-10-14 9 views
-1

これらは私のsrc/lib.rsファイルの内容は以下のとおりです。テストモジュールからモジュール内にない関数を呼び出す方法は?

pub fn foo() {} 

#[cfg(test)] 
mod tests { 
    #[test] 
    fn it_works() { 
     foo(); 
    } 
} 

私はcargo testを実行して、私は次のエラーを取得:

error[E0425]: unresolved name `foo` 
--> src/lib.rs:7:7 
    | 
7 |  foo(); 
    |  ^^^ 

がどのように私はtestモジュール内部からfooを呼ぶのですか?

+2

https://doc.rust-lang.org/stable/book/testing.html#the-tests-module – Shepmaster

答えて

2

あなたは親モジュールを参照するためにsuper::を使用することができます。クレートのルートモジュールを参照するために

fn it_works() { 
    super::foo(); 
} 

または::fooを繰り返し使用することができるよう

fn it_works() { 
    ::foo(); 
} 

または、あなたはモジュール内のuseそれをモジュールに入れることができます:

mod tests { 
    use foo;   // <-- import the `foo` at root module 
    // or 
    use super::foo; // <-- import the `foo` at parent module 
    fn it_works() { 
     foo(); 
    } 
} 
+0

ありがとう!私は 'use super :: *'を置いています。なぜなら私自身の木箱の名前空間の曇りを心配していないからです。 –

関連する問題