42 lines
857 B
Rust
42 lines
857 B
Rust
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<RefCell<State>> = MaybeUninit::uninit();
|
|
|
|
fn state() -> &'static RefCell<State> {
|
|
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<i32> {
|
|
let state = state().borrow();
|
|
let mut config = Vec::from(state.weights.0);
|
|
config.push(state.max_iters as i32);
|
|
config
|
|
}
|