observable-react 0.2.0

observable-react enables react component bindings to rust components using WASM
Documentation
use std::ops::Deref;

use observable_rs::Pushable;
use wasm_bindgen::JsValue;

pub struct List<T>(Vec<T>);

impl<T> Deref for List<T> {
    type Target = Vec<T>;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl<T> Default for List<T> {
    fn default() -> Self {
        Self(Default::default())
    }
}

impl<T> From<Vec<T>> for List<T> {
    fn from(value: Vec<T>) -> Self {
        Self(value)
    }
}

impl<T> Pushable for List<T> {
    type Value = T;

    fn push(&mut self, value: Self::Value) {
        self.0.push(value)
    }
}

impl<T> From<&List<T>> for JsValue
where
    T: Into<JsValue> + Clone,
{
    fn from(value: &List<T>) -> Self {
        let array = js_sys::Array::new();
        for v in value.0.iter() {
            let v = v.clone();
            let v: JsValue = v.into();
            array.push(&v);
        }
        array.into()
    }
}