json-gettext 3.1.4

A library for getting text from JSON usually for internationalization.
Documentation
use std::ops::{Deref, DerefMut};
use std::cell::UnsafeCell;
use std::fmt::Debug;

#[derive(Debug)]
pub struct DebuggableMutate<T: Debug> {
    data: UnsafeCell<T>,
}

unsafe impl<T: Debug> Sync for DebuggableMutate<T> {}

impl<T: Debug> DebuggableMutate<T> {
    #[inline]
    pub fn new(user_data: T) -> DebuggableMutate<T> {
        DebuggableMutate {
            data: UnsafeCell::new(user_data),
        }
    }

    #[inline]
    pub fn get(&self) -> &T {
        unsafe {
            &*self.data.get()
        }
    }

    #[inline]
    pub fn get_mut(&self) -> &mut T {
        unsafe {
            &mut *self.data.get()
        }
    }
}

impl<T: Debug> Deref for DebuggableMutate<T> {
    type Target = T;

    #[inline]
    fn deref(&self) -> &T {
        self.get()
    }
}

impl<T: Debug> DerefMut for DebuggableMutate<T> {
    #[inline]
    fn deref_mut(&mut self) -> &mut T {
        self.get_mut()
    }
}