quad-storage 0.1.3

Plugin for macro-, mini-quad (quads) to save data in simple local storage using Web Storage API in WASM and local file on a native platforms.
Documentation
use macroquad::prelude::*;
use quad_storage::*;

fn window_conf() -> Conf {
    Conf {
        window_title: "quad-storage".to_owned(),
        high_dpi: true,
        ..Default::default()
    }
}

#[macroquad::main(window_conf)]
async fn main() {
    let storage = &mut STORAGE.lock().unwrap();
    let mut key_field = String::new();
    let mut key_field2 = String::new();
    let mut key_field3 = String::new();
    let mut getted = None;
    let mut value_field = String::new();
    loop {
        clear_background(WHITE);

        egui_macroquad::ui(|egui_ctx| {
            egui::Window::new("Test of storage").collapsible(false).show(egui_ctx, |ui| {
                ui.label("Try close this tab or browser after adding some data. It will persist between runs.");
                ui.separator();
                ui.label("Data:");
                for i in 0..storage.len() {
                    let key = storage.key(i).ok_or(i).unwrap();
                    let value = storage.get(&key).ok_or(i).unwrap();
                    ui.monospace(format!("{:?} = {:?}", key, value));
                }
                ui.separator();
                ui.horizontal(|ui| {
                    ui.text_edit_singleline(&mut key_field);
                    ui.label("Key");    
                });
                ui.horizontal(|ui| {
                    ui.text_edit_singleline(&mut value_field);
                    ui.label("Value");    
                });
                if ui.button("Set").clicked() {
                    storage.set(&key_field, &value_field);
                }
                ui.separator();
                ui.horizontal(|ui| {
                    ui.text_edit_singleline(&mut key_field2);
                    ui.label("Key");    
                });
                if ui.button("Get").clicked() {
                    getted = storage.get(&key_field2);
                }
                ui.label(format!("Getted: {:?}", getted));
                ui.separator();
                ui.horizontal(|ui| {
                    ui.text_edit_singleline(&mut key_field3);
                    ui.label("Key");    
                });
                if ui.button("Remove key").clicked() {
                    storage.remove(&key_field3);
                }
                ui.separator();
                if ui.button("Clear").clicked() {
                    storage.clear();
                }
            });
        });

        egui_macroquad::draw();

        next_frame().await
    }
}