2015-05-02 34 views
3

之間的循環依賴關係我有兩個文件:「懸而未決導入」與模塊

  • json.rs在我稱之爲生成器,在builder.rs
  • builder.rs在我稱之爲Json的限定的結構,一個結構在json.rs中定義

正如您所見,這兩個模塊之間存在循環依賴關係。好像有時候鏽支持循環依賴,但這種情況下,編譯器會引發錯誤:

src/json/mod.rs:1:25: 1:31 error: unresolved import (maybe you meant `ToJson::*`?) 
src/json/mod.rs:1 pub use self::to_json::{ToJson}; 
              ^~~~~~ 
src/json/builder.rs:2:18: 2:22 error: unresolved import (maybe you meant `Json::*`?) 
src/json/builder.rs:2 use json::json::{Json, JsonEvent, Array, Object}; //commenting this line solve the dependency error 

[...] 

分支json_mod代碼is here。我試圖用更少的代碼行來重現問題,但我創建的循環依賴項編譯正確。

調試之後,剩下400個錯誤 - 這是正常的,因爲我正在進行巨大的代碼重構(將〜= 4000行文件分割成多個文件),而且我仍然有很多工作之前要做的工作。

+1

我無法在這個特定的問題發言,但我肯定會推薦試圖找到一種方法重構,讓您使用更小的步驟。您必須在編譯工作之間進行大量修改以修復400多個錯誤... – anderspitman

回答

3

編輯:光榮的消息,下面提到的錯誤是固定的!它在Rust 1.4或更高版本中得到了修復。

全球進口(use foo::*)有a known bug它們與循環進口不兼容。我會嘗試在兩個受影響的模塊中刪除glob導入。

+0

謝謝,但是我的代碼中沒有全局導入。 – Moebius

+0

我以爲我在兩個模塊中都看到了'使用std :: io :: prelude :: *'。我不是100%它會工作,但這是我的預感。 – bluss

+0

這是我的問題的來源!問題解決了。 – Moebius