#change #cd #detection

changed

简单的变化检测

3 个版本

0.1.2 2021 年 7 月 3 日
0.1.1 2021 年 6 月 28 日
0.1.0 2021 年 6 月 28 日

#1176数据结构

MIT/Apache

7KB
61

Cd:一个跟踪它所拥有数据变化的“智能指针”。

用法

use changed::Cd;

// Create the change tracker with an i32
let mut test: Changed<i32> = Changed::new(20);

// Mutate it (calling deref_mut through the *)
*test += 5;

// changed() reports whether or not it was changed
assert!(test.changed());

// Reset it the tracker back to false
test.reset();

// Read the data
assert_eq!(*test, 25);

// That didn't trip the change detection!
assert!(!test.changed());

它是如何工作的

技术上,它不跟踪变化。它跟踪对 deref_mut() 的调用,因此完全有可能调用 deref_mut() 而不改变它,从而产生假阳性。

此外,还有一个函数可以在不触发变化检测的情况下修改 Cd


lib.rs:

Cd:一个跟踪它所拥有数据变化的“智能指针”。

用法

use changed::Cd;

// Create the change tracker with an i32
let mut test: Cd<i32> = Cd::new(20);

// Mutate it (calling deref_mut through the *)
*test += 5;

// changed() reports whether or not it was changed
assert!(test.changed());

// Reset the tracker back to false
test.reset();

// Read the data
assert_eq!(*test, 25);

// That didn't trip the change detection!
assert!(!test.changed());

它是如何工作的

技术上,它不跟踪变化。它跟踪对 deref_mut() 的调用,因此完全有可能调用 deref_mut() 而不改变它,从而产生假阳性。

此外,还有一个函数可以在不触发变化检测的情况下修改 Cd

没有运行时依赖