2 个版本 (1 个稳定版)
1.0.0 | 2021 年 10 月 12 日 |
---|---|
0.1.0 | 2019 年 3 月 12 日 |
#125 在 配置
13,173 每月下载量
用于 50 个 Crates (8 个直接使用)
27KB
296 行
fluid-let
fluid-let 实现了 动态作用域 变量。
动态或 流体 变量是定义全局配置值的一种方便方式。它们来自 Lisp 语言家族,在这个用例中相对流行。
用法
将此添加到您的 Cargo.toml
[dependencies]
fluid-let = "1"
您可以使用 fluid_let!
宏声明全局动态变量。假设您想要为您的散列实现可配置的 Debug
,以控制是否打印整个散列或截断版本
use fluid_let::fluid_let;
fluid_let!(pub static DEBUG_FULL_HASH: bool);
使用 fluid_set!
宏启用完整打印。动态变量的赋值在一定的 动态 作用域内有效。在这种情况下,当函数正在执行时
use fluid_let::fluid_set;
fn some_important_function() {
fluid_set!(DEBUG_FULL_HASH, &true);
// Hashes will be printed out with full precision in this function
// as well as in all functions that it calls.
}
以下是实现使用动态配置的 Debug
的方法
impl fmt::Debug for Hash {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let full = DEBUG_FULL_HASH.copied().unwrap_or(false);
write!(f, "Hash(")?;
if full {
for byte in &self.value {
write!(f, "{:02X}", byte)?;
}
} else {
for byte in &self.value[..4] {
write!(f, "{:02X}", byte)?;
}
write!(f, "...")?;
}
write!(f, ")")
}
}
这里我们根据调用者是否启用了调试模式,打印散列的完整值或截断版本。
许可证
代码采用 MIT 许可证(见 LICENSE)。