我正在尝试为C FFI库构建Rust包装器,但底层库有一些不是线程安全的函数。为了访问这些函数,我需要一种全局锁来保护C库的状态。
是否有任何方法可以使用全局std::sync::RWLock
或类似机制来控制对C库的访问?
各种明显的解决方案失败,因为Rust不允许非平凡的全局初始化器:
error: function calls in constants are limited to struct and enum constructors [E0015]
example.rs:18 static global_state_lock: RWLock<()> = RWLock::new(());