枚举
⚠️
JavaScript 中没有 enum,并且 Rust 中的 enum 与 TypeScript 中的 enum
有很大的不同。 在 JavaScript 中使用 Rust enum 之前,你需要仔细阅读本节内容。
在 NAPI-RS 中,Rust enum 被转换为普通的 JavaScript 对象。
lib.rs
#[napi]
enum Kind {
  Duck,
  Dog,
  Cat,
}⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️
index.d.ts
export const enum Kind {
  Duck,
  Dog,
  Cat,
}在 TypeScript 中,数字 enums 成员还会获得从枚举值到枚举名称的反向映射。
但在 Rust 中,我们没有这种反向映射行为,它只是一个普通的 JavaScript 对象。
字符串枚举
lib.rs
#[napi(string_enum)]
enum Kind {
  Duck,
  Dog,
  Cat,
}⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️ ⬇️
index.d.ts
export const enum Kind {
  Duck = 'Duck',
  Dog = 'Dog',
  Cat = 'Cat',
}NAPI-RS 不支持将 Rust enum 的 impl 生成到 JavaScript 中。