[yew-devel] [PATCH yew-widget-toolkit 3/3] state: keyed slab tree: panic on inserting duplicate keys in debug mode
Dominik Csapak
d.csapak at proxmox.com
Mon Sep 29 15:12:11 CEST 2025
check on insert/append if the keys already exist, but only in debug mode
to not unnecessarily slow down release builds.
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
src/state/tree_store/keyed_slab_tree.rs | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/state/tree_store/keyed_slab_tree.rs b/src/state/tree_store/keyed_slab_tree.rs
index df163a2..c7044d1 100644
--- a/src/state/tree_store/keyed_slab_tree.rs
+++ b/src/state/tree_store/keyed_slab_tree.rs
@@ -449,6 +449,12 @@ impl<T> KeyedSlabTree<T> {
.append_subtree_node(subtree, subtree_node, level, parent);
let key_cache = self.calculate_cache(node_id);
+ #[cfg(debug_assertions)]
+ for key in key_cache.keys() {
+ if self.key_cache.contains_key(key) {
+ panic!("append_subtree_node: duplicate key {key:?}");
+ }
+ }
self.key_cache.extend(key_cache);
node_id
@@ -519,6 +525,10 @@ impl<T> KeyedSlabTree<T> {
fn insert_record(&mut self, record: T, parent_id: Option<usize>) -> usize {
let key = self.extract_key(&record);
let node_id = self.tree.insert_record(record, parent_id);
+ #[cfg(debug_assertions)]
+ if self.key_cache.contains_key(&key) {
+ panic!("insert_record: duplicate key {key:?}");
+ }
self.key_cache.insert(key, node_id);
node_id
}
--
2.47.3
More information about the yew-devel
mailing list