As you type in the input below, the text's SHA1 is calculated and displayed. The hashing function was written in Rust, without any thought put toward it eventually running in a browser or compiled to WebAssembly.
Text:
SHA1:
The WebAssembly code is loaded by a 130-line JavaScript file created by stdweb.
The JavaScript code on this page is:
Rust.wasmhash.then( function( hasher ) { const output = document.getElementById("output"); document.getElementById("string").addEventListener("keyup", (e) => { const hash = hasher.sha1(e.target.value); output.innerText = hash; }); });
The Rust code is:
#[macro_use] extern crate stdweb; extern crate sha1; use sha1::Sha1; fn hash( string: String ) -> String { let mut hasher = Sha1::new(); hasher.update( string.as_bytes() ); hasher.digest().to_string() } fn main() { stdweb::initialize(); js! { Module.exports.sha1 = @{hash}; } }
That's it!