dirty_static

Crates.iodirty_static
lib.rsdirty_static
version0.1.1
sourcesrc
created_at2019-10-20 20:44:50.067577
updated_at2019-10-20 20:46:22.112175
descriptionA container for an immutable value that allows sneaky reloading in debug mode (via UnsafeCell) while keeping the data safe and constant in release mode. This allows you to tweak data while testing an application, without having that data be mutable when the application is released. Intended for use with game assets, but suitable for any interactive application.
homepage
repositoryhttps://github.com/mistodon/dirty_static
max_upload_size
id174315
size10,149
Vi (mistodon)

documentation

README

dirty_static

Build Status Crates.io Docs.rs

This crate provides a container for a value, DirtyStatic, which allows mutation in debug mode (via UnsafeCell), but not in release mode.

This allows you to tweak data while testing an application, without having that data be mutable when the application is released.

There are also two features available:

  1. force-dynamic which allows replacing the value of a DirtyStatic even in release mode.
  2. force-static which disallows replacing the value of a DirtyStatic even in debug mode.

Usage

// In debug mode
use dirty_static::DirtyStatic;

let c = DirtyStatic::new(100);
unsafe {
    c.replace(200);
}

assert_eq!(*c, 200);
// In release mode
use dirty_static::DirtyStatic;

let c = DirtyStatic::new(100);
unsafe {
    c.replace(200);
}

assert_eq!(*c, 100);
Commit count: 13

cargo fmt