razer 0.1.5

A server side way to controll your website with rust
Documentation
use std::sync::Mutex;

use lazy_static::lazy_static;

use razer::event::event_type::Event::JS;
use razer::event::handler::EventHandler;
use razer::listener::Listener;
use razer::send::{broadcast, send};
use razer::Sender;
use razer::Value;

lazy_static! {
    static ref DATA: Mutex<u32> = Mutex::new(0);
}

#[derive(Copy)]
pub struct Handler;

impl Clone for Handler {
    fn clone(&self) -> Self {
        *self
    }
}

impl EventHandler for Handler {
    fn load(&self, _event: Value, ctx: &Sender) {
        send(
            &ctx,
            JS,
            format!(
                "document.getElementById(\"counter\").innerHTML = {}",
                DATA.lock().unwrap()
            )
                .as_str(),
        )
            .unwrap();
    }

    fn click(&self, _event: Value, ctx: &Sender) {
        let mut counter = DATA.lock().unwrap();
        *counter += 1;
        broadcast(
            &ctx,
            JS,
            format!(
                "document.getElementById(\"counter\").innerHTML = {}",
                counter
            )
                .as_str(),
        );
    }
}

fn main() {
    Listener::new().start(Handler);
}