我正在为 Erlang NIF API 做一些 Rust FFI 工作,我有这些:
ErlNifEnv *enif_alloc_env();
void enif_free_env(ErlNifEnv* env);
这个 ErlNifEnv 指针被传递给各种其他函数,但用户永远不会取消引用该指针。此外,此指针不是线程安全的(在多个线程中使用需要互斥锁)。这种类型的朴素 Rust 表示将是..
struct ErlNifEnv;
*mut ErlNifEnv;
但是,我认为我可以将这种类型视为具有“内部可变性”,这将导致……</p>
struct ErlNifEnv;
*const ErlNifEnv;
即使底层 C 代码将其视为非常量,我是否应该将此指针视为 const?