例如,我希望以下代码不能编译,因为Foo可以指向 aBar可以指向 a Foo。
#[derive(NoCycles)]
struct Foo {
k: u32,
p: Option<Rc<Bar>>,
}
#[derive(NoCycles)]
struct Bar {
s: Option<Rc<Foo>>,
}
#[derive(NoCycles)]
struct Baz {
s: String,
}
Run Code Online (Sandbox Code Playgroud)
如果Bar更改为 a Option<Rc<Baz>>,则编译应该会成功,因为无法Foo指向 a Foo。
rust ×1