"unresolved import" 模块之间存在循环依赖
"unresolved import" with a circular dependency between modules
我有两个文件:
- json.rs 其中我调用了 Builder,一个在 builder.rs
中定义的结构体
- builder.rs 其中我调用了 Json,一个在 json.rs
中定义的结构
如您所见,这两个模块之间存在循环依赖关系。似乎有时 Rust 支持循环依赖,但对于这种情况,编译器会抛出错误:
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 行文件的一个文件拆分为多个文件),而且我还有很多在让它工作之前要做的工作。
编辑:好消息,下面提到的错误已修复!它已在 Rust 1.4 或更高版本中修复。
Glob 导入 (use foo::*
) 有 a known bug 与循环导入不兼容的地方。我会尝试在两个受影响的模块中删除 glob 导入。
我有两个文件:
- json.rs 其中我调用了 Builder,一个在 builder.rs 中定义的结构体
- builder.rs 其中我调用了 Json,一个在 json.rs 中定义的结构
如您所见,这两个模块之间存在循环依赖关系。似乎有时 Rust 支持循环依赖,但对于这种情况,编译器会抛出错误:
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 行文件的一个文件拆分为多个文件),而且我还有很多在让它工作之前要做的工作。
编辑:好消息,下面提到的错误已修复!它已在 Rust 1.4 或更高版本中修复。
Glob 导入 (use foo::*
) 有 a known bug 与循环导入不兼容的地方。我会尝试在两个受影响的模块中删除 glob 导入。