#debug-mode #debugging #mutable #static #const #release #interactive-applications

dirty_static

一个用于不可变值的容器,允许在调试模式下通过 UnsafeCell 隐式地重新加载,同时在发布模式下保持数据安全且常量。这允许你在测试应用程序时调整数据,而无需在应用程序发布时将该数据设置为可变。适用于游戏资源,但也适用于任何交互式应用程序

2 个版本

0.1.1 2019年10月20日
0.1.0 2019年10月20日

#506 in 配置

CC0 许可证

10KB
135

dirty_static

Build Status Crates.io Docs.rs

这个包提供了一个名为 DirtyStatic 的值容器,允许在调试模式下(通过 UnsafeCell)进行修改,但在发布模式下不允许。

这允许你在测试应用程序时调整数据,而无需在应用程序发布时将该数据设置为可变。

此外,还有两个功能可用

  1. force-dynamic 允许在发布模式下替换 DirtyStatic 的值。
  2. force-static 禁止在调试模式下替换 DirtyStatic 的值。

用法

// 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);

无运行时依赖

功能