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. 51nod 1092 回文字符串
  2. 雷锋网独家解读:阿里云原生应用的布局与策略
  3. 三年级人教版下学期计算机教案,人教版三年级下册信息技术教案
  4. ant4 多个form 验证_爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别...
  5. CSDN、博客园等6大技术博客平台的写作体验测评 1
  6. java线程池_Java 并发编程 线程池源码实战
  7. matplotlib之subplot和动态作图(笔记六)
  8. 辞职在家全职炒股需要什么条件?
  9. 增长是一切企业问题解决的入口
  10. Flutter之GridView简析
  11. Python入门教程!手把手教会你爬取网页数据
  12. 苹果手机键盘html代码大全,iPhone拨号键盘中的*和#有什么作用 iPhone特殊代码分享...
  13. boot版本是什么 cent os_CentOS下载及版本选择-CentOS LiveCD、LiveDVD和BinDVD区别
  14. Linux(CentOS7.x)学习笔记(三)磁盘及文件系统 1.LVM(Logical Volume Manager)逻辑滚动条管理员
  15. 平面四连杆运动方程分析with matlab
  16. 老程序员都去哪儿了?国内的大龄程序员都去哪了
  17. 《分析服务从入门到精通读书笔记》第一章、数据分析基础(1)
  18. C#实战项目~智能图书管理系统
  19. UI 设计师的盛宴:Web UI 设计资源大系
  20. c语言两个小数加减乘除,加减乘除英语 c语言计算两个数的加减乘除?

热门文章

  1. 解决pycharm中.log文件打不开以及打开乱码
  2. 离线数据统计及词云图显示
  3. 分清向量的点乘和叉乘
  4. 机器学习(王衡军)练习题及答案
  5. 回车符、换行符和回车换行符
  6. AWS学习python-input
  7. AI跨界,RPA进阶,数字员工会是企业转型的最优解吗?
  8. delphi调用LUA函数来处理一些逻辑
  9. 使用ntpd配置集群时间同步
  10. CI130X智能语音芯片应用于智能面板,支持红外设备离线语音控制、场景控制等功能