nodex_api/value/name/
symbol.rs1use crate::{api, prelude::*};
2use std::{mem::MaybeUninit, os::raw::c_char};
3
4#[derive(Copy, Clone, Debug)]
5pub struct JsSymbol(pub(crate) JsValue);
6
7impl JsSymbol {
8 pub(crate) fn from_value(value: JsValue) -> JsSymbol {
9 JsSymbol(value)
10 }
11
12 pub fn new(env: NapiEnv) -> NapiResult<JsSymbol> {
15 let value = napi_call!(=napi_create_symbol, env, std::ptr::null_mut());
16 Ok(JsSymbol::from_value(JsValue::from_raw(env, value)))
17 }
18
19 pub fn description(env: NapiEnv, desc: JsString) -> NapiResult<JsSymbol> {
21 let value = napi_call!(=napi_create_symbol, env, desc.raw());
22 Ok(JsSymbol::from_value(JsValue::from_raw(env, value)))
23 }
24}
25
26napi_value_t!(JsSymbol);
27
28impl NapiValueCheck for JsSymbol {
29 fn check(&self) -> NapiResult<bool> {
30 Ok(self.kind()? == NapiValuetype::Symbol)
31 }
32}