gravitron 0.1.2

A GameEngine based on an ECS and Vulkan
Documentation
use std::sync::{Arc, RwLock};

#[derive(Debug, Clone)]
pub struct Mutator<T> {
  data: Arc<RwLock<T>>
}

impl<T> Mutator<T> {
  pub fn new(data: T) -> Self {
    Mutator {
      data: Arc::new(RwLock::new(data))
    }
  }

  pub fn set(&self, data: T) {
    *self.data.write().unwrap() = data;
  }

  pub fn get_mut(&self) -> std::sync::RwLockWriteGuard<T> {
    self.data.write().unwrap()
  }

  pub fn get(&self) -> std::sync::RwLockReadGuard<T> {
    self.data.read().unwrap()
  }
}