如何在Rust中的模块和文件中定义循环结构?

时间:2014-04-19 22:15:23

标签: rust

写作时

struct A { b : Option<B> }
struct B { a : Option<A> }

它编译。<​​/ p>

我如何在模块和文件之间拆分它?

当我尝试

// a.rs
mod b;
struct A { b : Option<B> }
// b.rs
mod a;
struct B { a : Option<A> }

我得到了

$ rustc a.rs 
a.rs:1:5: 1:6 error: circular modules: b.rs -> a.rs -> b.rs
a.rs:1 mod b;
           ^

这是我的环境

$ rustc --version
rustc 0.11-pre-nightly (168b2d1 2014-04-14 14:36:54 -0700)
host: x86_64-unknown-linux-gnu
$ uname -a
Linux 3.14.1-1-ARCH #1 SMP PREEMPT Mon Apr 14 20:40:47 CEST 2014 x86_64 GNU/Linux

1 个答案:

答案 0 :(得分:3)

您被错误使用mod抓住了。

mod 定义模块。

use导入已定义的模块。

您应该使用的内容类似于lib.rsmod.rs或包含mod a;mod b;的内容,然后在a.rsuse b::B; 1}},以及b.rsuse a::A