我使用libclang来解析源文件并引用某些类型CXType,比如它是" const std::__1::basic_string<char>"(如报告所述 clang_getTypeSpelling).如何获得相同类型的引用但没有const限定符?
我有共享公共资源的测试,不能同时执行.这些测试失败了cargo test,但与之合作RUST_TEST_THREADS=1 cargo test.
我可以修改测试以等待全局互斥,但如果有任何更简单的方法强制cargo为我设置此环境变量,我不想让它们混乱.
我拥有Engine它,Worker并且我想Engine提供一些 API 作为Worker对特征的引用。API 实现是使用 分配Box并由 拥有的Engine,因此只要工作进程还活着,对它的引用就是稳定且有效的。
但我不明白如何用 Rust 表达它。
我已阅读为什么不能在同一结构中存储值和对该值的引用?我明白为什么我不能传递对拥有价值的引用。但是,就我而言,我传递的不是对拥有值本身的引用,而是对装箱值的引用,该值不会被移动,因此对它的引用必须是稳定的。
这是非工作原型:
trait EngineApi {
fn foo(&self);
}
struct Worker<'a> {
api: &'a EngineApi,
}
impl<'a> Worker<'a> {
fn new(engine_api: &'a EngineApi) -> Self {
Worker { api: engine_api }
}
}
struct Api;
impl EngineApi for Api {
fn foo(&self) {}
}
struct Engine<'a> {
api: Box<Api>,
worker: Box<Worker<'a>>,
}
impl<'a> Engine<'a> {
fn new() -> …Run Code Online (Sandbox Code Playgroud)