例如,我希望以下代码不能编译,因为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。
我正在处理一个程序宏,该宏需要一个位置来在运行它的系统上存储状态。cargo clean运行时应清除状态。
过去,我假设target目录是正确的位置。但是,我的假设可能不正确,因为:
rustc和冲突cargo。为了避免这些问题,我一直在尝试确定一种正确定位位置的方法,但是并没有成功。我找到的最接近的是OUT_DIRCargo为构建脚本设置的环境变量,不幸的是,它没有为程序宏运行设置。
请注意,此问题不是“ 是否可以在Rust的程序宏中存储状态?”的重复项。。这个问题通常涵盖程序宏状态,而这个问题是关于在包装箱的文件结构中确定合适的位置。