当前位置: 首页 > news >正文

使用napi-rs,通过node调用rust代码

0、node版本建议在16以上

1、安装napi-rs

npm init -y
npm install @napi-rs/cli --save-dev

2、初始化一个 napi 项目

npx @napi-rs/cli new my-rust-addon
# 如果这句不行就试试
npx napi new my-rust-addon

3、进入my-rust-addon文件夹,在src里有lib.rs

  • 在原有代码上加上代码(也可以不加)
  • [napi(js_name = "add_two_numbers")] 是因为不加别名,node调用的时候会把下划线风格默认转成驼峰法,如果喜欢驼峰可以直接使用[napi]
#![deny(clippy::all)]use napi_derive::napi;#[napi(js_name = "plus_100")]
pub fn plus_100(input: u32) -> u32 {input + 100
}#[napi(js_name = "add_two_numbers")]
pub fn add_two_numbers(a: u32, b: u32) -> u32 {a + b
}#[napi(js_name = "run_loop")]
pub fn run_loop() -> u32 {let mut sum = 0;for i in 0..1000000 {sum += i;}sum
}

4、在my-rust-addon的package.json可以看见napi设置

  • 这个主要设置编译目标(Target Triple)
  • x86_64-pc-windows-msvc =
    x86_64架构 + 平台厂商Vendor + Windows操作系统 + 使用MSVC工具链编译的二进制文件
  "napi": {"binaryName": "my-rust-addon","targets": ["x86_64-pc-windows-msvc"]}

5、在my-rust-addon文件夹内开始编译

npm run build # 正式release包
npm run build:debug # 测试debug包
  • 可以看见my-rust-addon文件夹内有一个my-rust-addon.win32-x64-msvc.node文件,不用去target文件夹找,就在my-rust-addon文件夹内,这个就是可执行文件了

6、写一个index.js文件

const path = require('path');
const _p = path.join(__dirname, 'my-rust-addon', 'my-rust-addon.win32-x64-msvc.node');
console.log(_p);const addon = require(_p);const { plus_100, add_two_numbers, run_loop } = addon;console.log(plus_100(5));
console.log(add_two_numbers(2, 3)); // 5console.time('loop_rust');
run_loop();
console.timeEnd('loop_rust');console.time('loop_js');
let sum = 0;
for (let i = 0; i < 1000000; i++) {sum += i;
}
console.timeEnd('loop_js');
  • 运行这个文件得到结果,可以看见rust的效率有多高
node index.js 
D:\demo\rust\rustnode\my-rust-addon\my-rust-addon.win32-x64-msvc.node
105
5
loop_rust: 0.039ms
loop_js: 2.401ms
http://www.jsqmd.com/news/36953/

相关文章:

  • 20232309 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • 智语写作都有哪些功能?看这一篇就够了!智语写作全功能详解
  • pythontip 字符串转为字典
  • Microsoft Activation Scripts (MAS)
  • rufus.ini
  • 团队作业2
  • Explorer++
  • Interpretability-Guided Test-Time Adversarial Defense
  • JavaWeb04-JUnit
  • 2025 年 11 月开窗器厂家推荐排行榜,链条开窗器,机芯开窗器,配件开窗器,电动开窗器公司推荐
  • 详细介绍:用户体验就是新SEO:如何同时提升搜索者满意度和搜索排名
  • P6688 可重集 笔记
  • 哪款学习机适合小学生用?2025年11月多款主流品牌告诉你如何选
  • AIGC系统
  • noip5
  • 20232320 2024-2025-1 《网络与系统攻防技术》实验四实验报告
  • 20232326 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • #题解#洛谷P3143
  • STM32环境监测架构开发实践
  • [GESP202303 二级] 百鸡问题
  • 2025 年 11 月码垛机厂家推荐排行榜,多样板材码垛机,倒板码垛机,分拣码垛机,上料码垛机,下料码垛机,码垛机械手,全自动码垛机,龙门码垛机公司推荐
  • 2025 ICPC成都+南京游记
  • 题解 : P14461
  • MySQL表的增删改查 - 教程
  • 20232420 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • 业务用例的概念 - f
  • P11362 [NOIP2024] 遗失的赋值 题解
  • 2025 年 11 月钢塑复合管厂家推荐排行榜,PSP/衬塑/涂塑/工业/钢衬塑/化工防腐/高强度/缩合式/电磁双热熔钢塑复合管,钢塑复合管件公司推荐
  • COLMO洗衣机维修24小时售后服务点电话号码
  • 科烁集成灶维修服务丨24h在线报修