wrend 0.3.6

A WebGL2 rendering library for Rust/Wasm & JS
Documentation
use crate::Buffer;
use std::ops::{Deref, DerefMut};
use wasm_bindgen::prelude::wasm_bindgen;
use web_sys::WebGlBuffer;

pub type BufferJsInner = Buffer<String>;

#[wasm_bindgen(inspectable, js_name = Buffer)]
pub struct BufferJs(BufferJsInner);

#[wasm_bindgen(js_class = Buffer)]
impl BufferJs {
    #[wasm_bindgen(js_name = bufferId)]
    pub fn buffer_id(&self) -> String {
        self.deref().buffer_id().to_owned()
    }

    #[wasm_bindgen(js_name = webglBuffer)]
    pub fn webgl_buffer(&self) -> WebGlBuffer {
        self.deref().webgl_buffer().to_owned()
    }
}

impl Deref for BufferJs {
    type Target = BufferJsInner;

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

impl DerefMut for BufferJs {
    fn deref_mut(&mut self) -> &mut BufferJsInner {
        &mut self.0
    }
}

impl From<BufferJsInner> for BufferJs {
    fn from(js_buffer_inner: BufferJsInner) -> Self {
        Self(js_buffer_inner)
    }
}

impl From<&BufferJsInner> for BufferJs {
    fn from(js_buffer_inner: &BufferJsInner) -> Self {
        Self(js_buffer_inner.to_owned())
    }
}