小编Jef*_*aar的帖子

是否可以创建一个自定义派生来防止编译时类型之间的循环?

例如,我希望以下代码不能编译,因为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

8
推荐指数
1
解决办法
95
查看次数

标签 统计

rust ×1