mirror of
https://github.com/napi-rs/napi-rs.git
synced 2025-12-08 19:56:07 +00:00
feat(napi): implmenet Set (#2330)
This commit is contained in:
parent
3d95fcffdf
commit
f707f36c5a
@ -156,6 +156,8 @@ static KNOWN_TYPES: LazyLock<HashMap<&'static str, (&'static str, bool, bool)>>
|
||||
("HashMap", ("Record<{}, {}>", false, false)),
|
||||
("BTreeMap", ("Record<{}, {}>", false, false)),
|
||||
("IndexMap", ("Record<{}, {}>", false, false)),
|
||||
("HashSet", ("Set<{}>", false, false)),
|
||||
("BTreeSet", ("Set<{}>", false, false)),
|
||||
("ArrayBuffer", ("ArrayBuffer", false, false)),
|
||||
("JsArrayBuffer", ("ArrayBuffer", false, false)),
|
||||
("Int8Array", ("Int8Array", false, false)),
|
||||
|
||||
@ -27,6 +27,7 @@ mod promise;
|
||||
mod promise_raw;
|
||||
#[cfg(feature = "serde-json")]
|
||||
mod serde;
|
||||
mod set;
|
||||
mod string;
|
||||
mod symbol;
|
||||
mod task;
|
||||
|
||||
@ -4,7 +4,7 @@ use std::hash::{BuildHasher, Hash};
|
||||
#[cfg(feature = "object_indexmap")]
|
||||
use indexmap::IndexMap;
|
||||
|
||||
use crate::bindgen_prelude::{Env, Result, ToNapiValue, *};
|
||||
use crate::bindgen_prelude::*;
|
||||
|
||||
impl<K, V, S> TypeName for HashMap<K, V, S> {
|
||||
fn type_name() -> &'static str {
|
||||
|
||||
103
crates/napi/src/bindgen_runtime/js_values/set.rs
Normal file
103
crates/napi/src/bindgen_runtime/js_values/set.rs
Normal file
@ -0,0 +1,103 @@
|
||||
use std::collections::{BTreeSet, HashSet};
|
||||
use std::hash::{BuildHasher, Hash};
|
||||
|
||||
use crate::bindgen_prelude::*;
|
||||
|
||||
impl<V, S> TypeName for HashSet<V, S> {
|
||||
fn type_name() -> &'static str {
|
||||
"HashSet"
|
||||
}
|
||||
|
||||
fn value_type() -> ValueType {
|
||||
ValueType::Object
|
||||
}
|
||||
}
|
||||
|
||||
impl<V: FromNapiValue> ValidateNapiValue for HashSet<V> {}
|
||||
|
||||
impl<V, S> ToNapiValue for HashSet<V, S>
|
||||
where
|
||||
V: ToNapiValue,
|
||||
{
|
||||
unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {
|
||||
let env = Env::from(raw_env);
|
||||
let obj = env.get_global()?;
|
||||
let set_class = obj.get_named_property_unchecked::<Function<'_, Array, ()>>("Set")?;
|
||||
let set = set_class.new_instance(Array::from_vec(&env, val.into_iter().collect())?)?;
|
||||
|
||||
Ok(set.0.value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, S> FromNapiValue for HashSet<V, S>
|
||||
where
|
||||
V: FromNapiValue + PartialEq + Eq + Hash,
|
||||
S: Default + BuildHasher,
|
||||
{
|
||||
unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {
|
||||
let obj = unsafe { Object::from_napi_value(env, napi_val)? };
|
||||
let mut set = HashSet::default();
|
||||
let iter_creator: Function<'_, (), Object> = obj.get_named_property("values")?;
|
||||
let iter = iter_creator.apply(&obj, ())?;
|
||||
let next: Function<'_, (), Object> = iter.get_named_property("next")?;
|
||||
while {
|
||||
let o: Object = next.apply(&iter, ())?;
|
||||
let done: bool = o.get_named_property("done")?;
|
||||
if !done {
|
||||
let v = o.get_named_property_unchecked::<V>("value")?;
|
||||
set.insert(v);
|
||||
}
|
||||
!done
|
||||
} {}
|
||||
Ok(set)
|
||||
}
|
||||
}
|
||||
|
||||
impl<V> TypeName for BTreeSet<V> {
|
||||
fn type_name() -> &'static str {
|
||||
"BTreeSet"
|
||||
}
|
||||
|
||||
fn value_type() -> ValueType {
|
||||
ValueType::Object
|
||||
}
|
||||
}
|
||||
|
||||
impl<V: FromNapiValue> ValidateNapiValue for BTreeSet<V> {}
|
||||
|
||||
impl<V> ToNapiValue for BTreeSet<V>
|
||||
where
|
||||
V: ToNapiValue,
|
||||
{
|
||||
unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {
|
||||
let env = Env::from(raw_env);
|
||||
let obj = env.get_global()?;
|
||||
let set_class = obj.get_named_property_unchecked::<Function<'_, Array, ()>>("Set")?;
|
||||
let set = set_class.new_instance(Array::from_vec(&env, val.into_iter().collect())?)?;
|
||||
|
||||
Ok(set.0.value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<V> FromNapiValue for BTreeSet<V>
|
||||
where
|
||||
V: FromNapiValue + Ord,
|
||||
{
|
||||
unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {
|
||||
let obj = unsafe { Object::from_napi_value(env, napi_val)? };
|
||||
let mut set = BTreeSet::default();
|
||||
let iter_creator: Function<'_, (), Object> = obj.get_named_property("values")?;
|
||||
let iter = iter_creator.apply(&obj, ())?;
|
||||
let next: Function<'_, (), Object> = iter.get_named_property("next")?;
|
||||
while {
|
||||
let o: Object = next.apply(&iter, ())?;
|
||||
let done: bool = o.get_named_property("done")?;
|
||||
if !done {
|
||||
let v = o.get_named_property_unchecked::<V>("value")?;
|
||||
set.insert(v);
|
||||
}
|
||||
!done
|
||||
} {}
|
||||
Ok(set)
|
||||
}
|
||||
}
|
||||
@ -329,6 +329,10 @@ Generated by [AVA](https://avajs.dev).
|
||||
␊
|
||||
export declare function bigintGetU64AsString(bi: bigint): string␊
|
||||
␊
|
||||
export declare function btreeSetToJs(): Set<string>␊
|
||||
␊
|
||||
export declare function btreeSetToRust(set: Set<string>): void␊
|
||||
␊
|
||||
export declare function bufferPassThrough(buf: Buffer): Promise<Buffer>␊
|
||||
␊
|
||||
export declare function buildThreadsafeFunctionFromFunction(callback: (arg0: number, arg1: number) => number): void␊
|
||||
@ -638,6 +642,10 @@ Generated by [AVA](https://avajs.dev).
|
||||
␊
|
||||
export declare function panicInAsync(): Promise<void>␊
|
||||
␊
|
||||
export declare function passSetToJs(): Set<string>␊
|
||||
␊
|
||||
export declare function passSetToRust(set: Set<string>): void␊
|
||||
␊
|
||||
export interface Pet {␊
|
||||
name: string␊
|
||||
kind: number␊
|
||||
|
||||
Binary file not shown.
@ -35,6 +35,10 @@ import {
|
||||
getIndexMapping,
|
||||
sumIndexMapping,
|
||||
indexmapPassthrough,
|
||||
passSetToJs,
|
||||
passSetToRust,
|
||||
btreeSetToJs,
|
||||
btreeSetToRust,
|
||||
getCwd,
|
||||
Animal,
|
||||
Kind,
|
||||
@ -257,6 +261,15 @@ test('map', (t) => {
|
||||
t.deepEqual(indexmapPassthrough({ a: 101, b: 102 }), { a: 101, b: 102 })
|
||||
})
|
||||
|
||||
test('set', (t) => {
|
||||
t.notThrows(() => {
|
||||
passSetToRust(new Set(['a', 'b', 'c']))
|
||||
btreeSetToRust(new Set(['a', 'b', 'c']))
|
||||
})
|
||||
t.deepEqual(Array.from(passSetToJs()).sort(), ['a', 'b', 'c'])
|
||||
t.deepEqual(Array.from(btreeSetToJs()).sort(), ['a', 'b', 'c'])
|
||||
})
|
||||
|
||||
test('enum', (t) => {
|
||||
t.deepEqual([Kind.Dog, Kind.Cat, Kind.Duck], [0, 1, 2])
|
||||
t.is(enumToI32(CustomNumEnum.Eight), 8)
|
||||
|
||||
@ -307,76 +307,80 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
||||
__napiInstance.exports['__napi_register__test_serde_roundtrip_311']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_big_number_precision_312']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_313']?.()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_314']?.()
|
||||
__napiInstance.exports['__napi_register__contains_315']?.()
|
||||
__napiInstance.exports['__napi_register__concat_str_316']?.()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_317']?.()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_318']?.()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_319']?.()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_320']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_321']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_322']?.()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_323']?.()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_324']?.()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_325']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_326']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_void_return_327']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_328']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_optional_return_329']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_330']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_read_file_331']?.()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_332']?.()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_333']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_334']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_335']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_336']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_337']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_338']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_339']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_340']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_341']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_342']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_343']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_344']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_345']?.()
|
||||
__napiInstance.exports['__napi_register__spawn_thread_in_thread_346']?.()
|
||||
__napiInstance.exports['__napi_register__Pet_struct_347']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_in_either_348']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_349']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_slice_350']?.()
|
||||
__napiInstance.exports['__napi_register__append_buffer_351']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_352']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_buffer_slice_353']?.()
|
||||
__napiInstance.exports['__napi_register__create_buffer_slice_from_copied_data_354']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_typed_array_355']?.()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_356']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_357']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_358']?.()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_359']?.()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_360']?.()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_361']?.()
|
||||
__napiInstance.exports['__napi_register__accept_slice_362']?.()
|
||||
__napiInstance.exports['__napi_register__accept_arraybuffer_363']?.()
|
||||
__napiInstance.exports['__napi_register__create_arraybuffer_364']?.()
|
||||
__napiInstance.exports['__napi_register__u8_array_to_array_365']?.()
|
||||
__napiInstance.exports['__napi_register__i8_array_to_array_366']?.()
|
||||
__napiInstance.exports['__napi_register__u16_array_to_array_367']?.()
|
||||
__napiInstance.exports['__napi_register__i16_array_to_array_368']?.()
|
||||
__napiInstance.exports['__napi_register__u32_array_to_array_369']?.()
|
||||
__napiInstance.exports['__napi_register__i32_array_to_array_370']?.()
|
||||
__napiInstance.exports['__napi_register__f32_array_to_array_371']?.()
|
||||
__napiInstance.exports['__napi_register__f64_array_to_array_372']?.()
|
||||
__napiInstance.exports['__napi_register__u64_array_to_array_373']?.()
|
||||
__napiInstance.exports['__napi_register__i64_array_to_array_374']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_375']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_376']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_377']?.()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_378']?.()
|
||||
__napiInstance.exports['__napi_register__async_buffer_to_array_379']?.()
|
||||
__napiInstance.exports['__napi_register__u_init8_array_from_string_380']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncReader_impl_381']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_struct_382']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_impl_384']?.()
|
||||
__napiInstance.exports['__napi_register__pass_set_to_rust_314']?.()
|
||||
__napiInstance.exports['__napi_register__pass_set_to_js_315']?.()
|
||||
__napiInstance.exports['__napi_register__btree_set_to_rust_316']?.()
|
||||
__napiInstance.exports['__napi_register__btree_set_to_js_317']?.()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_318']?.()
|
||||
__napiInstance.exports['__napi_register__contains_319']?.()
|
||||
__napiInstance.exports['__napi_register__concat_str_320']?.()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_321']?.()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_322']?.()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_323']?.()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_324']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_325']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_326']?.()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_327']?.()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_328']?.()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_329']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_330']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_void_return_331']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_332']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_optional_return_333']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_334']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_read_file_335']?.()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_336']?.()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_337']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_338']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_339']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_340']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_341']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_342']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_343']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_344']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_345']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_346']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_347']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_348']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_349']?.()
|
||||
__napiInstance.exports['__napi_register__spawn_thread_in_thread_350']?.()
|
||||
__napiInstance.exports['__napi_register__Pet_struct_351']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_in_either_352']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_353']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_slice_354']?.()
|
||||
__napiInstance.exports['__napi_register__append_buffer_355']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_356']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_buffer_slice_357']?.()
|
||||
__napiInstance.exports['__napi_register__create_buffer_slice_from_copied_data_358']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_typed_array_359']?.()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_360']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_361']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_362']?.()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_363']?.()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_364']?.()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_365']?.()
|
||||
__napiInstance.exports['__napi_register__accept_slice_366']?.()
|
||||
__napiInstance.exports['__napi_register__accept_arraybuffer_367']?.()
|
||||
__napiInstance.exports['__napi_register__create_arraybuffer_368']?.()
|
||||
__napiInstance.exports['__napi_register__u8_array_to_array_369']?.()
|
||||
__napiInstance.exports['__napi_register__i8_array_to_array_370']?.()
|
||||
__napiInstance.exports['__napi_register__u16_array_to_array_371']?.()
|
||||
__napiInstance.exports['__napi_register__i16_array_to_array_372']?.()
|
||||
__napiInstance.exports['__napi_register__u32_array_to_array_373']?.()
|
||||
__napiInstance.exports['__napi_register__i32_array_to_array_374']?.()
|
||||
__napiInstance.exports['__napi_register__f32_array_to_array_375']?.()
|
||||
__napiInstance.exports['__napi_register__f64_array_to_array_376']?.()
|
||||
__napiInstance.exports['__napi_register__u64_array_to_array_377']?.()
|
||||
__napiInstance.exports['__napi_register__i64_array_to_array_378']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_379']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_380']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_381']?.()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_382']?.()
|
||||
__napiInstance.exports['__napi_register__async_buffer_to_array_383']?.()
|
||||
__napiInstance.exports['__napi_register__u_init8_array_from_string_384']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncReader_impl_385']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_struct_386']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_impl_388']?.()
|
||||
}
|
||||
export const Animal = __napiModule.exports.Animal
|
||||
export const AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor
|
||||
@ -445,6 +449,8 @@ export const bigintAdd = __napiModule.exports.bigintAdd
|
||||
export const bigintFromI128 = __napiModule.exports.bigintFromI128
|
||||
export const bigintFromI64 = __napiModule.exports.bigintFromI64
|
||||
export const bigintGetU64AsString = __napiModule.exports.bigintGetU64AsString
|
||||
export const btreeSetToJs = __napiModule.exports.btreeSetToJs
|
||||
export const btreeSetToRust = __napiModule.exports.btreeSetToRust
|
||||
export const bufferPassThrough = __napiModule.exports.bufferPassThrough
|
||||
export const buildThreadsafeFunctionFromFunction = __napiModule.exports.buildThreadsafeFunctionFromFunction
|
||||
export const buildThreadsafeFunctionFromFunctionCalleeHandle = __napiModule.exports.buildThreadsafeFunctionFromFunctionCalleeHandle
|
||||
@ -555,6 +561,8 @@ export const overrideIndividualArgOnFunction = __napiModule.exports.overrideIndi
|
||||
export const overrideIndividualArgOnFunctionWithCbArg = __napiModule.exports.overrideIndividualArgOnFunctionWithCbArg
|
||||
export const panic = __napiModule.exports.panic
|
||||
export const panicInAsync = __napiModule.exports.panicInAsync
|
||||
export const passSetToJs = __napiModule.exports.passSetToJs
|
||||
export const passSetToRust = __napiModule.exports.passSetToRust
|
||||
export const plusOne = __napiModule.exports.plusOne
|
||||
export const promiseInEither = __napiModule.exports.promiseInEither
|
||||
export const readFile = __napiModule.exports.readFile
|
||||
|
||||
@ -331,76 +331,80 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
||||
__napiInstance.exports['__napi_register__test_serde_roundtrip_311']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_big_number_precision_312']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_313']?.()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_314']?.()
|
||||
__napiInstance.exports['__napi_register__contains_315']?.()
|
||||
__napiInstance.exports['__napi_register__concat_str_316']?.()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_317']?.()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_318']?.()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_319']?.()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_320']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_321']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_322']?.()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_323']?.()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_324']?.()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_325']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_326']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_void_return_327']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_328']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_optional_return_329']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_330']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_read_file_331']?.()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_332']?.()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_333']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_334']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_335']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_336']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_337']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_338']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_339']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_340']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_341']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_342']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_343']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_344']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_345']?.()
|
||||
__napiInstance.exports['__napi_register__spawn_thread_in_thread_346']?.()
|
||||
__napiInstance.exports['__napi_register__Pet_struct_347']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_in_either_348']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_349']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_slice_350']?.()
|
||||
__napiInstance.exports['__napi_register__append_buffer_351']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_352']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_buffer_slice_353']?.()
|
||||
__napiInstance.exports['__napi_register__create_buffer_slice_from_copied_data_354']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_typed_array_355']?.()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_356']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_357']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_358']?.()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_359']?.()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_360']?.()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_361']?.()
|
||||
__napiInstance.exports['__napi_register__accept_slice_362']?.()
|
||||
__napiInstance.exports['__napi_register__accept_arraybuffer_363']?.()
|
||||
__napiInstance.exports['__napi_register__create_arraybuffer_364']?.()
|
||||
__napiInstance.exports['__napi_register__u8_array_to_array_365']?.()
|
||||
__napiInstance.exports['__napi_register__i8_array_to_array_366']?.()
|
||||
__napiInstance.exports['__napi_register__u16_array_to_array_367']?.()
|
||||
__napiInstance.exports['__napi_register__i16_array_to_array_368']?.()
|
||||
__napiInstance.exports['__napi_register__u32_array_to_array_369']?.()
|
||||
__napiInstance.exports['__napi_register__i32_array_to_array_370']?.()
|
||||
__napiInstance.exports['__napi_register__f32_array_to_array_371']?.()
|
||||
__napiInstance.exports['__napi_register__f64_array_to_array_372']?.()
|
||||
__napiInstance.exports['__napi_register__u64_array_to_array_373']?.()
|
||||
__napiInstance.exports['__napi_register__i64_array_to_array_374']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_375']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_376']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_377']?.()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_378']?.()
|
||||
__napiInstance.exports['__napi_register__async_buffer_to_array_379']?.()
|
||||
__napiInstance.exports['__napi_register__u_init8_array_from_string_380']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncReader_impl_381']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_struct_382']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_impl_384']?.()
|
||||
__napiInstance.exports['__napi_register__pass_set_to_rust_314']?.()
|
||||
__napiInstance.exports['__napi_register__pass_set_to_js_315']?.()
|
||||
__napiInstance.exports['__napi_register__btree_set_to_rust_316']?.()
|
||||
__napiInstance.exports['__napi_register__btree_set_to_js_317']?.()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_318']?.()
|
||||
__napiInstance.exports['__napi_register__contains_319']?.()
|
||||
__napiInstance.exports['__napi_register__concat_str_320']?.()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_321']?.()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_322']?.()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_323']?.()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_324']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_325']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_326']?.()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_327']?.()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_328']?.()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_329']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_330']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_void_return_331']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_332']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_optional_return_333']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_334']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_read_file_335']?.()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_336']?.()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_337']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_338']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_339']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_340']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_341']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_342']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_343']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_344']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_345']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_346']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_347']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_348']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_349']?.()
|
||||
__napiInstance.exports['__napi_register__spawn_thread_in_thread_350']?.()
|
||||
__napiInstance.exports['__napi_register__Pet_struct_351']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_in_either_352']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_353']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_slice_354']?.()
|
||||
__napiInstance.exports['__napi_register__append_buffer_355']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_356']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_buffer_slice_357']?.()
|
||||
__napiInstance.exports['__napi_register__create_buffer_slice_from_copied_data_358']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_typed_array_359']?.()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_360']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_361']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_362']?.()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_363']?.()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_364']?.()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_365']?.()
|
||||
__napiInstance.exports['__napi_register__accept_slice_366']?.()
|
||||
__napiInstance.exports['__napi_register__accept_arraybuffer_367']?.()
|
||||
__napiInstance.exports['__napi_register__create_arraybuffer_368']?.()
|
||||
__napiInstance.exports['__napi_register__u8_array_to_array_369']?.()
|
||||
__napiInstance.exports['__napi_register__i8_array_to_array_370']?.()
|
||||
__napiInstance.exports['__napi_register__u16_array_to_array_371']?.()
|
||||
__napiInstance.exports['__napi_register__i16_array_to_array_372']?.()
|
||||
__napiInstance.exports['__napi_register__u32_array_to_array_373']?.()
|
||||
__napiInstance.exports['__napi_register__i32_array_to_array_374']?.()
|
||||
__napiInstance.exports['__napi_register__f32_array_to_array_375']?.()
|
||||
__napiInstance.exports['__napi_register__f64_array_to_array_376']?.()
|
||||
__napiInstance.exports['__napi_register__u64_array_to_array_377']?.()
|
||||
__napiInstance.exports['__napi_register__i64_array_to_array_378']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_379']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_380']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_381']?.()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_382']?.()
|
||||
__napiInstance.exports['__napi_register__async_buffer_to_array_383']?.()
|
||||
__napiInstance.exports['__napi_register__u_init8_array_from_string_384']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncReader_impl_385']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_struct_386']?.()
|
||||
__napiInstance.exports['__napi_register__Reader_impl_388']?.()
|
||||
}
|
||||
module.exports.Animal = __napiModule.exports.Animal
|
||||
module.exports.AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor
|
||||
@ -469,6 +473,8 @@ module.exports.bigintAdd = __napiModule.exports.bigintAdd
|
||||
module.exports.bigintFromI128 = __napiModule.exports.bigintFromI128
|
||||
module.exports.bigintFromI64 = __napiModule.exports.bigintFromI64
|
||||
module.exports.bigintGetU64AsString = __napiModule.exports.bigintGetU64AsString
|
||||
module.exports.btreeSetToJs = __napiModule.exports.btreeSetToJs
|
||||
module.exports.btreeSetToRust = __napiModule.exports.btreeSetToRust
|
||||
module.exports.bufferPassThrough = __napiModule.exports.bufferPassThrough
|
||||
module.exports.buildThreadsafeFunctionFromFunction = __napiModule.exports.buildThreadsafeFunctionFromFunction
|
||||
module.exports.buildThreadsafeFunctionFromFunctionCalleeHandle = __napiModule.exports.buildThreadsafeFunctionFromFunctionCalleeHandle
|
||||
@ -579,6 +585,8 @@ module.exports.overrideIndividualArgOnFunction = __napiModule.exports.overrideIn
|
||||
module.exports.overrideIndividualArgOnFunctionWithCbArg = __napiModule.exports.overrideIndividualArgOnFunctionWithCbArg
|
||||
module.exports.panic = __napiModule.exports.panic
|
||||
module.exports.panicInAsync = __napiModule.exports.panicInAsync
|
||||
module.exports.passSetToJs = __napiModule.exports.passSetToJs
|
||||
module.exports.passSetToRust = __napiModule.exports.passSetToRust
|
||||
module.exports.plusOne = __napiModule.exports.plusOne
|
||||
module.exports.promiseInEither = __napiModule.exports.promiseInEither
|
||||
module.exports.readFile = __napiModule.exports.readFile
|
||||
|
||||
@ -431,6 +431,8 @@ module.exports.bigintAdd = nativeBinding.bigintAdd
|
||||
module.exports.bigintFromI128 = nativeBinding.bigintFromI128
|
||||
module.exports.bigintFromI64 = nativeBinding.bigintFromI64
|
||||
module.exports.bigintGetU64AsString = nativeBinding.bigintGetU64AsString
|
||||
module.exports.btreeSetToJs = nativeBinding.btreeSetToJs
|
||||
module.exports.btreeSetToRust = nativeBinding.btreeSetToRust
|
||||
module.exports.bufferPassThrough = nativeBinding.bufferPassThrough
|
||||
module.exports.buildThreadsafeFunctionFromFunction = nativeBinding.buildThreadsafeFunctionFromFunction
|
||||
module.exports.buildThreadsafeFunctionFromFunctionCalleeHandle = nativeBinding.buildThreadsafeFunctionFromFunctionCalleeHandle
|
||||
@ -541,6 +543,8 @@ module.exports.overrideIndividualArgOnFunction = nativeBinding.overrideIndividua
|
||||
module.exports.overrideIndividualArgOnFunctionWithCbArg = nativeBinding.overrideIndividualArgOnFunctionWithCbArg
|
||||
module.exports.panic = nativeBinding.panic
|
||||
module.exports.panicInAsync = nativeBinding.panicInAsync
|
||||
module.exports.passSetToJs = nativeBinding.passSetToJs
|
||||
module.exports.passSetToRust = nativeBinding.passSetToRust
|
||||
module.exports.plusOne = nativeBinding.plusOne
|
||||
module.exports.promiseInEither = nativeBinding.promiseInEither
|
||||
module.exports.readFile = nativeBinding.readFile
|
||||
|
||||
@ -319,6 +319,10 @@ export declare function bigintFromI64(): bigint
|
||||
|
||||
export declare function bigintGetU64AsString(bi: bigint): string
|
||||
|
||||
export declare function btreeSetToJs(): Set<string>
|
||||
|
||||
export declare function btreeSetToRust(set: Set<string>): void
|
||||
|
||||
export declare function bufferPassThrough(buf: Buffer): Promise<Buffer>
|
||||
|
||||
export declare function buildThreadsafeFunctionFromFunction(callback: (arg0: number, arg1: number) => number): void
|
||||
@ -628,6 +632,10 @@ export declare function panic(): void
|
||||
|
||||
export declare function panicInAsync(): Promise<void>
|
||||
|
||||
export declare function passSetToJs(): Set<string>
|
||||
|
||||
export declare function passSetToRust(set: Set<string>): void
|
||||
|
||||
export interface Pet {
|
||||
name: string
|
||||
kind: number
|
||||
|
||||
@ -62,6 +62,7 @@ mod object;
|
||||
mod promise;
|
||||
mod reference;
|
||||
mod serde;
|
||||
mod set;
|
||||
mod shared;
|
||||
mod string;
|
||||
mod symbol;
|
||||
|
||||
35
examples/napi/src/set.rs
Normal file
35
examples/napi/src/set.rs
Normal file
@ -0,0 +1,35 @@
|
||||
use std::collections::{BTreeSet, HashSet};
|
||||
|
||||
#[napi]
|
||||
pub fn pass_set_to_rust(set: HashSet<String>) {
|
||||
assert_eq!(set.len(), 3);
|
||||
assert!(set.contains("a"));
|
||||
assert!(set.contains("b"));
|
||||
assert!(set.contains("c"));
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn pass_set_to_js() -> HashSet<String> {
|
||||
let mut set = HashSet::new();
|
||||
set.insert("a".to_string());
|
||||
set.insert("b".to_string());
|
||||
set.insert("c".to_string());
|
||||
set
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn btree_set_to_rust(set: BTreeSet<String>) {
|
||||
assert_eq!(set.len(), 3);
|
||||
assert!(set.contains("a"));
|
||||
assert!(set.contains("b"));
|
||||
assert!(set.contains("c"));
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn btree_set_to_js() -> BTreeSet<String> {
|
||||
let mut set = BTreeSet::new();
|
||||
set.insert("a".to_string());
|
||||
set.insert("b".to_string());
|
||||
set.insert("c".to_string());
|
||||
set
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user