相关疑难解决方法(0)

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

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

什么地方适合存储程序宏构件,以便通过“货物清理”进行清理?

我正在处理一个程序宏,该宏需要一个位置来在运行它的系统上存储状态。cargo clean运行时应清除状态。

过去,我假设target目录是正确的位置。但是,我的假设可能不正确,因为:

  1. 我的文件和目录可能与rustc和冲突cargo
  2. 目标目录的位置可以更改为默认值。

为了避免这些问题,我一直在尝试确定一种正确定位位置的方法,但是并没有成功。我找到的最接近的是OUT_DIRCargo为构建脚本设置的环境变量,不幸的是,它没有为程序宏运行设置。

请注意,此问题不是“ 是否可以在Rust的程序宏中存储状态?”的重复项。这个问题通常涵盖程序宏状态,而这个问题是关于在包装箱的文件结构中确定合适的位置。

rust rust-cargo rust-proc-macros

5
推荐指数
1
解决办法
146
查看次数

标签 统计

rust ×2

rust-cargo ×1

rust-proc-macros ×1