docs: explain match assertions and annotation type distinctions
This commit is contained in:
@@ -164,6 +164,7 @@ fn explicit_references_control_lifetime_and_copies_are_borrowed() {
|
||||
vm.release(owned).unwrap();
|
||||
assert_eq!(drops.load(Ordering::SeqCst), 1);
|
||||
assert_eq!(vm.object_count(), 0);
|
||||
// 最后拥有根释放后,复制来的借用句柄必须失效,不能当作额外拥有根。
|
||||
assert!(matches!(vm.object(borrowed), Err(VmError::InvalidHandle)));
|
||||
assert_eq!(vm.release(borrowed), Err(VmError::InvalidHandle));
|
||||
}
|
||||
@@ -210,6 +211,7 @@ fn replacing_the_same_edge_does_not_destroy_the_target() {
|
||||
assert_eq!(vm.ref_count(target).unwrap(), 1);
|
||||
vm.set_attr(owner, "child", Value::Number(7_i64.into()))
|
||||
.unwrap();
|
||||
// 属性从对象改为数值会归还原目标最后的边,因此旧 target 句柄应失效。
|
||||
assert!(matches!(vm.object(target), Err(VmError::InvalidHandle)));
|
||||
assert_eq!(
|
||||
vm.get_attr(owner, "child").unwrap(),
|
||||
@@ -350,7 +352,9 @@ fn cycles_remain_while_rooted_and_are_collected_when_unreachable() {
|
||||
assert_eq!(vm.collect_cycles(), 2);
|
||||
assert_eq!(vm.collect_cycles(), 0);
|
||||
assert_eq!(drops.load(Ordering::SeqCst), 2);
|
||||
// 无根环回收后第一个旧句柄失效,不能只依赖析构计数判断槽是否仍可访问。
|
||||
assert!(matches!(vm.object(first), Err(VmError::InvalidHandle)));
|
||||
// 同一垃圾环中的第二个对象也必须失效,避免只回收部分环。
|
||||
assert!(matches!(vm.object(second), Err(VmError::InvalidHandle)));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user