Showing
6 changed files
with
152 additions
and
0 deletions
tutorial/wasm-game-of-life/.gitignore
0 → 100644
tutorial/wasm-game-of-life/Cargo.toml
0 → 100644
1 | +[package] | |
2 | +name = "wasm-game-of-life" | |
3 | +version = "0.1.0" | |
4 | +authors = ["hopp@silpion.de"] | |
5 | +edition = "2018" | |
6 | + | |
7 | +[lib] | |
8 | +crate-type = ["cdylib", "rlib"] | |
9 | + | |
10 | +[features] | |
11 | +default = ["console_error_panic_hook"] | |
12 | + | |
13 | +[dependencies] | |
14 | +wasm-bindgen = "0.2" | |
15 | + | |
16 | +# The `console_error_panic_hook` crate provides better debugging of panics by | |
17 | +# logging them with `console.error`. This is great for development, but requires | |
18 | +# all the `std::fmt` and `std::panicking` infrastructure, so isn't great for | |
19 | +# code size when deploying. | |
20 | +console_error_panic_hook = { version = "0.1.1", optional = true } | |
21 | + | |
22 | +# `wee_alloc` is a tiny allocator for wasm that is only ~1K in code size | |
23 | +# compared to the default allocator's ~10K. It is slower than the default | |
24 | +# allocator, however. | |
25 | +# | |
26 | +# Unfortunately, `wee_alloc` requires nightly Rust when targeting wasm for now. | |
27 | +wee_alloc = { version = "0.4.2", optional = true } | |
28 | + | |
29 | +[dev-dependencies] | |
30 | +wasm-bindgen-test = "0.2" | |
31 | + | |
32 | +[profile.release] | |
33 | +# Tell `rustc` to optimize for small code size. | |
34 | +opt-level = "s" | ... | ... |
tutorial/wasm-game-of-life/README.md
0 → 100644
1 | +<div align="center"> | |
2 | + | |
3 | + <h1><code>wasm-pack-template</code></h1> | |
4 | + | |
5 | + <strong>A template for kick starting a Rust and WebAssembly project using <a href="https://github.com/rustwasm/wasm-pack">wasm-pack</a>.</strong> | |
6 | + | |
7 | + <p> | |
8 | + <a href="https://travis-ci.org/rustwasm/wasm-pack-template"><img src="https://img.shields.io/travis/rustwasm/wasm-pack-template.svg?style=flat-square" alt="Build Status" /></a> | |
9 | + </p> | |
10 | + | |
11 | + <h3> | |
12 | + <a href="https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html">Tutorial</a> | |
13 | + <span> | </span> | |
14 | + <a href="https://discordapp.com/channels/442252698964721669/443151097398296587">Chat</a> | |
15 | + </h3> | |
16 | + | |
17 | + <sub>Built with 🦀🕸 by <a href="https://rustwasm.github.io/">The Rust and WebAssembly Working Group</a></sub> | |
18 | +</div> | |
19 | + | |
20 | +## About | |
21 | + | |
22 | +[**📚 Read this template tutorial! 📚**][template-docs] | |
23 | + | |
24 | +This template is designed for compiling Rust libraries into WebAssembly and | |
25 | +publishing the resulting package to NPM. | |
26 | + | |
27 | +Be sure to check out [other `wasm-pack` tutorials online][tutorials] for other | |
28 | +templates and usages of `wasm-pack`. | |
29 | + | |
30 | +[tutorials]: https://rustwasm.github.io/docs/wasm-pack/tutorials/index.html | |
31 | +[template-docs]: https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html | |
32 | + | |
33 | +## 🚴 Usage | |
34 | + | |
35 | +### 🐑 Use `cargo generate` to Clone this Template | |
36 | + | |
37 | +[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate) | |
38 | + | |
39 | +``` | |
40 | +cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project | |
41 | +cd my-project | |
42 | +``` | |
43 | + | |
44 | +### 🛠️ Build with `wasm-pack build` | |
45 | + | |
46 | +``` | |
47 | +wasm-pack build | |
48 | +``` | |
49 | + | |
50 | +### 🔬 Test in Headless Browsers with `wasm-pack test` | |
51 | + | |
52 | +``` | |
53 | +wasm-pack test --headless --firefox | |
54 | +``` | |
55 | + | |
56 | +### 🎁 Publish to NPM with `wasm-pack publish` | |
57 | + | |
58 | +``` | |
59 | +wasm-pack publish | |
60 | +``` | |
61 | + | |
62 | +## 🔋 Batteries Included | |
63 | + | |
64 | +* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating | |
65 | + between WebAssembly and JavaScript. | |
66 | +* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook) | |
67 | + for logging panic messages to the developer console. | |
68 | +* [`wee_alloc`](https://github.com/rustwasm/wee_alloc), an allocator optimized | |
69 | + for small code size. | ... | ... |
tutorial/wasm-game-of-life/src/lib.rs
0 → 100644
1 | +mod utils; | |
2 | + | |
3 | +use wasm_bindgen::prelude::*; | |
4 | + | |
5 | +// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global | |
6 | +// allocator. | |
7 | +#[cfg(feature = "wee_alloc")] | |
8 | +#[global_allocator] | |
9 | +static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; | |
10 | + | |
11 | +#[wasm_bindgen] | |
12 | +extern { | |
13 | + fn alert(s: &str); | |
14 | +} | |
15 | + | |
16 | +#[wasm_bindgen] | |
17 | +pub fn greet() { | |
18 | + alert("Hello, {{project-name}}!"); | |
19 | +} | ... | ... |
tutorial/wasm-game-of-life/src/utils.rs
0 → 100644
1 | +pub fn set_panic_hook() { | |
2 | + // When the `console_error_panic_hook` feature is enabled, we can call the | |
3 | + // `set_panic_hook` function at least once during initialization, and then | |
4 | + // we will get better error messages if our code ever panics. | |
5 | + // | |
6 | + // For more details see | |
7 | + // https://github.com/rustwasm/console_error_panic_hook#readme | |
8 | + #[cfg(feature = "console_error_panic_hook")] | |
9 | + console_error_panic_hook::set_once(); | |
10 | +} | ... | ... |
tutorial/wasm-game-of-life/tests/web.rs
0 → 100644
Please
register
or
login
to post a comment