3 个版本
0.1.2 | 2021 年 7 月 3 日 |
---|---|
0.1.1 | 2021 年 6 月 28 日 |
0.1.0 | 2021 年 6 月 28 日 |
#1176 在 数据结构 中
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
。