文档
概念
Typed Array

TypedArray

TypedArray 描述了一个底层 二进制数据缓冲区 (opens in a new tab) 的类数组视图, 使用 TypedArray 允许你在 Node.js 和 Rust 之间无需复制或移动底层数据也可共享数据。

Buffer

Buffer (opens in a new tab) 是 JavaScript的 Uint8Array (opens in a new tab) 的子类,它经常用于在 Node.js 和 Rust 之间共享数据。

Buffer 可以通过 Vec<u8> 创建,如果你以这种方式创建 BufferVec<u8> 的所有权将被转移给 v8,当 v8 GC Buffer 时,Vec<u8> 将被丢弃。

lib.rs
use napi::bindgen_prelude::*;
use napi_derive::napi;
 
#[napi]
pub fn create_buffer() -> Buffer {
  vec![0, 1, 2].into()
}
💡

底层的 Vec<u8> 不会以这种方式被移动或复制。