rust的wasm使用wasm-pack来build,有很多选项和target用于不同的目的,本文描述一个最简单的示例,不使用webpack和npm,让你可以快速入门和了解。

全局安装 wasm-pack

cargo install wasm-pack --no-default-features # 忽略 OpenSSL

实例代码

extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;#[wasm_bindgen]
extern {pub fn alert(s: &str);
}#[wasm_bindgen]
pub fn messagebox(name: &str) {alert(&format!("Hello, {}!", name));
}

编译打包,

wasm-pack build --target web

如果编译失败时,可以安装wasm-bindgen-cli试试

cargo install wasm-bindgen-cli

浏览器中js调用

import('./hello_wasm.js').then(async m => {await m.default()m.messagebox('hello')
})

cargo.toml参考

[package]
name = "wasmdem"
version = "0.1.0"
authors = ["nnsword <coolmoonf@163.com>"]
edition = "2018"[lib]
crate-type = ["cdylib", "rlib"][features]
default = ["console_error_panic_hook"][dependencies]
wasm-bindgen = "0.2.63"# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`. This is great for development, but requires
# all the `std::fmt` and `std::panicking` infrastructure, so isn't great for
# code size when deploying.
console_error_panic_hook = { version = "0.1.6", optional = true }# `wee_alloc` is a tiny allocator for wasm that is only ~1K in code size
# compared to the default allocator's ~10K. It is slower than the default
# allocator, however.
#
# Unfortunately, `wee_alloc` requires nightly Rust when targeting wasm for now.
wee_alloc = { version = "0.4.5", optional = true }[dev-dependencies]
wasm-bindgen-test = "0.3.13"[profile.release]
# Tell `rustc` to optimize for small code size.
opt-level = "s"[package.metadata.wasm-pack.profile.dev]
wasm-opt = false[package.metadata.wasm-pack.profile.release]
wasm-opt = false

rust语言编写wasm简单例子相关推荐

  1. Bitcoin.com开发人员正创建一个用Rust语言编写的BCH全节点

    近日,Bitcoin.com开发人员Gabriel Cardona在推特表示,自己正创建一个用Rust语言编写的BCH全节点,目的是为了改变完整节点的范式,让BCH代码库更加安全.编程人员技术贡献更加 ...

  2. c语言游戏总出bug,C语言 编写的简单移动游戏出现bug?_编程_游戏设计_C语言_天涯问答_天涯社区...

    C语言 编写的简单移动游戏出现bug? 第一次按上下左右没什么问题,之后就会卡住..不知道出了什么错 源码如下:(用vc++的win32 console程序编写) #include #include ...

  3. Redox随笔(1)-用Rust语言编写的类UNIX操作系统

    Redox是一个用Rust语言编写的类UNIX操作系统 , 它的目标是把Rust语言的创新带入到一个现代的微内核和全系列的应用程序. https://www.redox-os.org/zh/docs/ ...

  4. c语言编写一个简单的答题系统

    利用c语言编写一个简单的答题系统. 思路是先设计好题目和答案,再输入自己的答案,利用输入的答案与正确答案对比,从而得出你回答的对错. (一)捆绑题目和答案 我们可以利用结构体对一个题目捆绑上一个答案. ...

  5. 【Rust日报】2021-10-05 Mimic: 一款用Rust语言编写的命令行Gameboy模拟器

    Mimic: 一款用Rust语言编写的命令行Gameboy模拟器 Mimic: A Gameboy emulator written in Rust that can be played on the ...

  6. C语言编写一个简单的扫雷

    C语言编写一个简单的扫雷 # include <stdio.h> # include <stdlib.h> # include <math.h> # include ...

  7. 2022-07-25:xiu是用rust语言编写的流媒体服务器软件项目。k8s安装xiu,drone文件如何写?

    2022-07-25:xiu是用rust语言编写的流媒体服务器软件项目.k8s安装xiu,drone文件如何写? 答案2022-07-25: 云原生环境不可能完全一样,只能做参考. 我采用的是dron ...

  8. Redox随笔(2)-用Rust语言编写的类UNIX操作系统

    与其他操作系统相比,Redox如何 我们与其他操作系统有很多共同之处. 由于 Redox syscall接口是Unix-y.例如,我们有open, pipe, pipe2, lseek, read, ...

  9. 用 C 语言编写一个简单的垃圾回收器

    人们似乎认为编写垃圾回收机制是很难的,是一种只有少数智者和Hans Boehm(et al)才能理解的高深魔法.我认为编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc样例难 ...

最新文章

  1. Windows 10 还有前途么?
  2. 2019-04-12 cookie基础
  3. The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone
  4. 少儿编程100讲轻松学python(九)-python如何判断字符串是否为整数
  5. 一键换ip命令_软网推荐:高效命令行备份更简单
  6. 迁移潮来袭!数十个项目宣布即将停止支持 Python 2
  7. MySQL -- 获取当前数据行号
  8. android 手机开门,智灵开门(智灵开门app)V5.0.2 安卓版
  9. 《活出生命的意义》生命之意义
  10. Android全屏和强制横屏竖屏设置
  11. 小公司的 ERP 或数据库, 该用 PC 还是 Server
  12. Node.js实现支付宝H5支付
  13. vue3.0 + xlsx 实现纯前端生成excel表格
  14. 从事互联网经营就要办理icp许可证吗
  15. 线代 | 线性代数的本质 本质 本质 nature
  16. css-边框重叠问题解决
  17. 插值查找(在数据是差值排序的时候比二分快)
  18. 蛋花花谈程序员年过四十该何去何从
  19. 用Python编写一个电子考勤系统
  20. 2021年中国石墨烯产业链发展分析:节能环保政策的扶持下,石墨烯产业规模将持续扩大[图]

热门文章

  1. 关于java校招面试技术心得
  2. 开始重新来学C语言了
  3. NTSC与PAL制式的转换
  4. 多路径路由算法—ECMP、WCMP
  5. YYModel高性能 iOS数据模型转换
  6. 关于讯飞错误码 21002 的问题解决反思
  7. JavaScript系列—一道十面埋伏的原型链面试题
  8. 个人常用的VS Code插件
  9. 易查分怎么上传成绩?
  10. [OC-Foundation框架]-<字符串And日期与时间>