use std::{cell::RefCell, mem::MaybeUninit}; use wasm_bindgen_macro::wasm_bindgen; use fish::Weights; #[global_allocator] static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; struct State { weights: Weights, max_iters: u32, } static mut STATE: MaybeUninit> = MaybeUninit::uninit(); fn state() -> &'static RefCell { unsafe { STATE.assume_init_ref() } } #[wasm_bindgen(start)] fn start() { let init_state = State { weights: Weights::default(), max_iters: 10_000, }; unsafe { STATE.write(RefCell::new(init_state)) }; } #[wasm_bindgen] pub fn get_version() -> String { "0.0.x".to_owned() } #[wasm_bindgen] pub fn get_config() -> Vec { let state = state().borrow(); let mut config = Vec::from(state.weights.0); config.push(state.max_iters as i32); config }