2017-05-14 6 views
1

私はRustを学ぶプロジェクトを開始しています。私は、適切なモジュール構造を設定するなどの最も基本的なことに失敗します。私はpub useを試みたが、私はすべての前でpubを書き込もうとしました、どこでも、私が得るすべてが素敵な洞察力あるメッセージネストされたモジュールをRustでパブリックにする

error[E0432]: unresolved import `math::Point` 
    --> src/theorem/math.rs:28:20 
    | 
28 |  pub use math::{Point}; 
    |     ^^^^^ no `Point` in `math` 

ですが

// src/theorem/math.rs 
pub mod theorem { 
    pub mod math { 
     use std::ops::{Add, Sub}; 

     pub struct Point { 
      x: i32, 
      y: i32, 
     } 

     impl Add for Point { 
      // Omitted... 
     } 
    } 

    pub use math::{Point}; 
} 

#[cfg(test)] 
mod tests { 
    use theorem::math::{Point}; 

    #[test] 
    fn add_point() { 
     let v1 = Point { x: 1, y: 1 }; 
     let v2 = Point { x: 2, y: 2 }; 
     assert_eq!(v1 + v1, v2); 
    } 
} 

:私のコードは次のようになります私を助けません。私は文書を読んだが、この事例の実際の例はないが...可能でなければならないのだろうか?

また、​​のような適切なディレクトリ構造を使用しようとしましたが、それもうまくいきませんでした。

答えて

3

どのコンパイラのバージョンを使用しますか? Since version 1.13は、エラーメッセージは次のようになります。

error[E0432]: unresolved import `math::Point` 
    --> <anon>:16:20 
    | 
16 |  pub use math::{Point}; 
    |     ^^^^^ Did you mean `self::math`? 

そしてpub use self::math::{Point};が実際にあなたの質問を解決します! useパスの場合、このパスはです。常に絶対パスです。これは、それがあなたの木枠の根から解釈されることを意味します。しかし、mathモジュールはルートモジュールの直接の子として存在せず、したがってエラーです。

+0

私は1.16を使用していました。しかし、チップのおかげで、それは今働くようです! – Lanbo

関連する問題