mirror of
https://github.com/napi-rs/napi-rs.git
synced 2026-01-18 15:16:51 +00:00
22 lines
591 B
Rust
22 lines
591 B
Rust
use napi::{bindgen_prelude::*, JsString};
|
|
|
|
#[napi]
|
|
pub fn shorter_scope(env: &Env, arr: Array) -> Result<Vec<u32>> {
|
|
let len = arr.len();
|
|
let mut result = Vec::with_capacity(len as usize);
|
|
for i in 0..len {
|
|
let scope = HandleScope::create(env)?;
|
|
let value: Unknown = arr.get_element(i)?;
|
|
let len = scope.run(value, |v| match v.get_type()? {
|
|
ValueType::String => {
|
|
let string = unsafe { v.cast::<JsString>() }?;
|
|
Ok(string.utf8_len()? as u32)
|
|
}
|
|
ValueType::Object => Ok(1),
|
|
_ => Ok(0),
|
|
})?;
|
|
result.push(len);
|
|
}
|
|
Ok(result)
|
|
}
|