92 lines
1.4 KiB
Rust

/// default enum values are continuos i32s start from 0
#[napi]
#[derive(Debug, Clone, Copy)]
pub enum Kind {
/// Barks
Dog,
/// Kills birds
Cat,
/// Tasty
Duck,
}
#[napi]
pub enum Empty {}
#[napi(string_enum)]
pub enum Status {
Pristine,
Loading,
Ready,
}
#[allow(clippy::enum_variant_names)]
#[napi(string_enum = "lowercase")]
pub enum StringEnum {
VariantOne,
VariantTwo,
VariantThree,
}
/// You could break the step and for an new continuous value.
#[napi]
pub enum CustomNumEnum {
One = 1,
Two,
Three = 3,
Four,
#[doc(hidden)]
Six = 6,
Eight = 8,
Nine, // would be 9
Ten, // 10
}
#[napi]
fn enum_to_i32(e: CustomNumEnum) -> i32 {
e as i32
}
#[napi(skip_typescript)]
pub enum SkippedEnums {
One = 1,
Two,
Tree,
}
#[napi(string_enum)]
pub enum CustomStringEnum {
#[napi(value = "my-custom-value")]
Foo,
Bar,
Baz,
}
#[napi(discriminant = "type2")]
pub enum StructuredKind {
Hello,
Greeting { name: String },
Birthday { name: String, age: u8 },
Tuple(u32, u32),
}
#[napi(discriminant_case = "lowercase")]
pub enum StructuredKindLowercase {
Hello,
Greeting { name: String },
Birthday { name: String, age: u8 },
Tuple(u32, u32),
}
#[napi]
pub fn validate_structured_enum(kind: StructuredKind) -> StructuredKind {
kind
}
#[napi]
pub fn validate_structured_enum_lowercase(
kind: StructuredKindLowercase,
) -> StructuredKindLowercase {
kind
}