nvgx 0.3.3

Pure-rust implementation of NanoVG
Documentation
use std::{
    cell::RefCell,
    ops::{Deref, DerefMut},
};

use crate::{RendererDevice, Transform};

pub(crate) struct InstancesInner<R: RendererDevice> {
    pub(crate) vertex_buffer: Option<R::VertexBuffer>,
}

pub struct Instances<R: RendererDevice> {
    pub(crate) transforms: Vec<Transform>,
    pub(crate) inner: RefCell<InstancesInner<R>>,
}

impl<R: RendererDevice> Instances<R> {
    pub fn new(transforms: Vec<Transform>) -> Self {
        return Self {
            transforms,
            inner: RefCell::new(InstancesInner {
                vertex_buffer: None,
            }),
        };
    }
}

impl<R: RendererDevice> Deref for Instances<R> {
    type Target = Vec<Transform>;
    fn deref(&self) -> &Self::Target {
        return &self.transforms;
    }
}

impl<R: RendererDevice> DerefMut for Instances<R> {
    fn deref_mut(&mut self) -> &mut Self::Target {
        return &mut self.transforms;
    }
}