shark/fish-webworker/src/lib.rs

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
}