Alex Crichton 3efe51eb8b Reorganize and rewrite examples
This commit is a large-ish scale reorganization of our examples. The
main goal here is to have a dedicated section of the guide for example,
and all examples will be listed there. Each example's `README` is now
just boilerplate pointing at the guide along with a blurb about how to
run it.

Some examples like `math` and `smorgasboard` have been deleted as they
didn't really serve much purpose, and others like `closures` have been
rewritten with `web-sys` instead of hand-bound bindings.

Overall it's hoped that this puts us in a good and consistent state for
our examples, with all of them being described in the guide, excerpts
are in the guide, and they're all relatively idiomatically using
`web-sys`.
2018-09-20 16:45:30 -07:00

52 lines
961 B
Rust

extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
// lifted from the `console_log` example
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen(js_namespace = console)]
fn log(s: &str);
}
#[wasm_bindgen]
#[derive(Debug)]
pub struct Counter {
key: char,
count: i32,
}
#[wasm_bindgen]
impl Counter {
pub fn default() -> Counter {
log("Counter::default");
Self::new('a', 0)
}
pub fn new(key: char, count: i32) -> Counter {
log(&format!("Counter::new({}, {})", key, count));
Counter {
key: key,
count: count,
}
}
pub fn key(&self) -> char {
log("Counter.key()");
self.key
}
pub fn count(&self) -> i32 {
log("Counter.count");
self.count
}
pub fn increment(&mut self) {
log("Counter.increment");
self.count += 1;
}
pub fn update_key(&mut self, key: char) {
self.key = key;
}
}