From 81b5678ba1762c9528829b070fc5dcd8ea10ee43 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sat, 18 Feb 2023 20:18:54 -0800 Subject: [PATCH] Add @rsw dir --- @rsw/hello/.gitignore | 6 ++++++ @rsw/hello/Cargo.toml | 32 ++++++++++++++++++++++++++++++++ @rsw/hello/src/lib.rs | 21 +++++++++++++++++++++ @rsw/hello/src/utils.rs | 10 ++++++++++ 4 files changed, 69 insertions(+) create mode 100644 @rsw/hello/.gitignore create mode 100644 @rsw/hello/Cargo.toml create mode 100644 @rsw/hello/src/lib.rs create mode 100644 @rsw/hello/src/utils.rs diff --git a/@rsw/hello/.gitignore b/@rsw/hello/.gitignore new file mode 100644 index 00000000..4e301317 --- /dev/null +++ b/@rsw/hello/.gitignore @@ -0,0 +1,6 @@ +/target +**/*.rs.bk +Cargo.lock +bin/ +pkg/ +wasm-pack.log diff --git a/@rsw/hello/Cargo.toml b/@rsw/hello/Cargo.toml new file mode 100644 index 00000000..c1b2bf68 --- /dev/null +++ b/@rsw/hello/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "hello" +version = "0.1.0" +authors = ["Gregory Schier "] +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. +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" diff --git a/@rsw/hello/src/lib.rs b/@rsw/hello/src/lib.rs new file mode 100644 index 00000000..8bad11a5 --- /dev/null +++ b/@rsw/hello/src/lib.rs @@ -0,0 +1,21 @@ +mod utils; + +use wasm_bindgen::prelude::*; + +// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global allocator. +#[cfg(feature = "wee_alloc")] +#[global_allocator] +static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; + +#[wasm_bindgen] +extern { + fn alert(s: &str); + + #[wasm_bindgen(js_namespace = console)] + fn log(s: &str); +} + +#[wasm_bindgen] +pub fn greet() { + log("Hello from Rust WASM!"); +} diff --git a/@rsw/hello/src/utils.rs b/@rsw/hello/src/utils.rs new file mode 100644 index 00000000..b1d7929d --- /dev/null +++ b/@rsw/hello/src/utils.rs @@ -0,0 +1,10 @@ +pub fn set_panic_hook() { + // When the `console_error_panic_hook` feature is enabled, we can call the + // `set_panic_hook` function at least once during initialization, and then + // we will get better error messages if our code ever panics. + // + // For more details see + // https://github.com/rustwasm/console_error_panic_hook#readme + #[cfg(feature = "console_error_panic_hook")] + console_error_panic_hook::set_once(); +}