Crates.io | monotone-crescendo |
lib.rs | monotone-crescendo |
version | 1.0.4 |
source | src |
created_at | 2021-11-19 22:40:32.965958 |
updated_at | 2021-11-21 02:30:11.54506 |
description | A library designed for use in WebAssembly that implements solutions to LeetCode #926 NOTE: Only published to crates.io as educational experiment. This crate will not work as is if you try to use it as a dependency due to it's crate-type setting of "cdylib." |
homepage | https://hamburgchimps.github.io/monotone-crescendo/ |
repository | https://github.com/HamburgChimps/monotone-crescendo |
max_upload_size | |
id | 484664 |
size | 20,013 |
Rust implementations of LeetCode problem #926, compiled to WebAssembly and invoked via Javascript
Clone this repository onto your machine.
Install wasm-gc
by running cargo install wasm-gc
. This is used by build-demo.sh
to reduce the size of the compiled wasm binary by removing unneccesary/unused cruft. Even
though the wasm-gc
project itself says you shouldn't use it in most cases, it still seems to get the wasm file the smallest. I tried using the --gc-sections
flag in the compiler options and wasm-gc
still got it smaller. I am not making use of wasm-bindgen
or wasm-pack
in this project, which both attempt to remove cruft when compiling, so I utilized wasm-gc
to do it manually.
Run ./build-demo.sh
in the repository root. This creates the monotone_crescendo.wasm
binary and an index.html
file in a directory named demo
in the repository root.
cd
into demo/
and run an http server. Using python's SimpleHTTPServer
, for example:
cd demo/
python -m SimpleHTTPServer
The demo will then be available at http://localhost:8000
.
Detailed documnetation generated via rustdoc can be found alongside the demo.
Huge credit to Dr. Richard Apodaca and his blog, depth-first.com, without which I'm not sure I would have been able to make sense of how to read and write from WebAssembly's linear memory without having to dive straight into something like wasm-bindgen
.
These two blog posts from Dr. Apodaca were most helpful:
Further credit goes to Radu Matei and his blog post, which helped me build upon the concepts I learned from Dr. Apodaca's posts.
The prefix sum solution is the official solution on LeetCode, I only translated it into Rust.
The cumulative solution was posted to LeetCode by tarunbisht, and was translated into Rust by me.