首页 > 其他分享 >0013-wasm-hello world

0013-wasm-hello world

时间:2022-08-29 17:27:37浏览次数:83  
标签:INFO 0013 bindgen hook game wasm panic hello

环境

  • Time 2022-05-12
  • Rust 1.60.0
  • Node 12.22.5
  • wasm-pack 0.10.2

前言

说明

环境配置参考:https://rustwasm.github.io/docs/book/game-of-life/setup.html
参考:https://rustwasm.github.io/docs/book/game-of-life/hello-world.html

目标

实现第一个 wasm 程序,使用 wasm 弹出一个 alert 框。

Cargo.toml

[package]
edition = "2021"
name = "game"
version = "0.1.0"

[lib]
crate-type = ["cdylib", "rlib"]

[features]
default = ["console_error_panic_hook"]

[dependencies]
console_error_panic_hook = {version = "*", optional = true}
wasm-bindgen = "*"
wee_alloc = {version = "*", optional = true}

[dev-dependencies]
wasm-bindgen-test = "*"

[profile.release]
opt-level = "s"

lib.rs

mod utils;

use wasm_bindgen::prelude::*;

#[cfg(feature = "wee_alloc")]
#[global_allocator]
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;

#[wasm_bindgen]
extern "C" {
    fn alert(s: &str);
}

#[wasm_bindgen]
pub fn greet() {
    alert("hello wasm");
}

utils.rs

pub fn set_panic_hook() {
    #[cfg(feature = "console_error_panic_hook")]
    console_error_panic_hook::set_once();
}

增加构建目标

rustup target add wasm32-unknown-unknown

wasm-pack

wasm-pack build
[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
warning: function is never used: `set_panic_hook`
 --> src\utils.rs:1:8
  |
1 | pub fn set_panic_hook() {
  |        ^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: `game` (lib) generated 1 warning
    Finished release [optimized] target(s) in 0.07s
[WARN]: :-) origin crate has no README
[INFO]: Installing wasm-bindgen...
[INFO]: Optimizing wasm binaries with `wasm-opt`...
[INFO]: Optional fields missing from Cargo.toml: 'description', 'repository', and 'license'. These are not necessary, but recommended
[INFO]: :-) Done in 9.67s
[INFO]: :-) Your wasm pkg is ready to publish at C:\Users\jiangbo\work\game\pkg.

生成前端

npm init wasm-app www

增加依赖

"dependencies": {
    "game": "file:../pkg"
}

启动

npm run start

总结

实现了第一个 wasm 程序,在浏览器中弹出了一个 alert 框。

附录

标签:INFO,0013,bindgen,hook,game,wasm,panic,hello
From: https://www.cnblogs.com/jiangbo4444/p/16636602.html

相关文章

  • 0015-wasm-康威生命游戏
    环境Time2022-05-14Rust1.60.0Node12.22.5wasm-pack0.10.2前言说明参考:https://rustwasm.github.io/docs/book/game-of-life/implementing.html目标在上一......
  • Hello出行海量日志系统架构演进
    本文摘自我的公众号【陶朱公Boy】文章:《Hello出行海量日志系统架构演进》欢迎大家的关注!公众号回复关键字”日志“进行完整PPT文档的下载!Hello出行海量日志系统架构......
  • 第一个代码Hello World!
    HelloWorld新建一个文件夹,存放代码新建一个Java文件文件后缀为.java名为Hello.java[注意]要显示系统后缀名编写代码publicclassHello{public......
  • Java入门-程序员的世界“Hello,World!”
    HelloWorld!java大小写敏感,尽量使用英文,用英文符号使用cmd输出建文件夹存放代码,新建Java文件,编写代码如下,编译javacjava,生成class文件,运行class文件:publicclassHell......
  • 正确打开HelloWorld的方式
    HelloWorld--随便创建一个文件夹,存放代码--新建一个Java文件 1.文件后缀名改为.java 2.HelloWorld.java 3.【注意点】系统可能没有显示文件后缀名,需要我们手动打开......
  • java helloworld demo
    大二的时候写过web仅限于idea配合springboot,学习的时候需要写个javademo或者算法,居然不知道怎么写了首先创建一个文件夹,写上你的代码,因为是demo,所以不......
  • Hello,World!
    Hello,World!新建一个文件夹,用于存放代码。在新建的文件夹中新建一个java文件。(java文件指文件后缀名是java)Hello.java用notepad++打开Hello.java在notepad......
  • 【Java学习day04】Hello World
    HelloWorld随便新建一个文件夹,存放代码在新建的文件夹里新建一个java文件新建一个文本文档将新建的文本文档重命名为hello.java注意了!后缀必须改为.java并保存......
  • 内核模块实验1 lx_hello.ko
    实验环境完整的可以编译的内核源码,这里选取RK3568_Android11源码中的kernel部分添加HELLOWORLD字符设备驱动在RK3568_Android11/kernel/drivers/char/中新建文件......
  • 1.1 1 Hello, World!
    描述对于大部分编程语言来说,编写一个能够输出“Hello,World!”的程序往往是最基本、最简单的。因此,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也......