From c07604563e039e143fe2561976d8da7b4febbcf8 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Sat, 24 Oct 2026 08:45:39 +0000 Subject: [PATCH] sonar: leave the duplicated cache blocks in object_matte and roto alone (new-code duplication gate) Co-Authored-By: Claude Sonnet 5.5 --- crates/effects/src/object_matte.rs | 4 ++-- crates/effects/src/roto.rs | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/effects/src/object_matte.rs b/crates/effects/src/object_matte.rs index a12d3332..d98ec73a 100644 --- a/crates/effects/src/object_matte.rs +++ b/crates/effects/src/object_matte.rs @@ -315,11 +315,11 @@ fn frozen_cache(j: &str) -> Option> { let mut h = 0xcbf2_9ce4_8422_2325; fnv(&mut h, j.as_bytes()); let c = C.get_or_init(Default::default); - if let Some(d) = c.lock().unwrap_or_else(std::sync::PoisonError::into_inner).get(&h) { + if let Some(d) = c.lock().unwrap_or_else(|e| e.into_inner()).get(&h) { return Some(d.clone()); } let d = Arc::new(FrozenCache::from_json(j)?); - let mut m = c.lock().unwrap_or_else(std::sync::PoisonError::into_inner); + let mut m = c.lock().unwrap_or_else(|e| e.into_inner()); if m.len() > 8 { m.clear(); } diff --git a/crates/effects/src/roto.rs b/crates/effects/src/roto.rs index 354ef4a6..4917cc23 100644 --- a/crates/effects/src/roto.rs +++ b/crates/effects/src/roto.rs @@ -132,11 +132,11 @@ pub fn data(params: &Params) -> Arc { let mut h = 0xcbf2_9ce4_8422_2325; fnv(&mut h, j.as_bytes()); let c = C.get_or_init(Default::default); - if let Some(d) = c.lock().unwrap_or_else(std::sync::PoisonError::into_inner).get(&h) { + if let Some(d) = c.lock().unwrap_or_else(|e| e.into_inner()).get(&h) { return d.clone(); } let d = Arc::new(RotoData::from_json(j)); - let mut m = c.lock().unwrap_or_else(std::sync::PoisonError::into_inner); + let mut m = c.lock().unwrap_or_else(|e| e.into_inner()); if m.len() > 64 { m.clear(); } @@ -247,11 +247,11 @@ fn cache() -> &'static Mutex { /// A cached segmentation (chain key, scale). pub fn cached(key: u64, scale: f64) -> Option> { - cache().lock().unwrap_or_else(std::sync::PoisonError::into_inner).map.get(&(key, scale.to_bits())).cloned() + cache().lock().unwrap_or_else(|e| e.into_inner()).map.get(&(key, scale.to_bits())).cloned() } pub fn store(key: u64, scale: f64, seg: Arc) { - let mut c = cache().lock().unwrap_or_else(std::sync::PoisonError::into_inner); + let mut c = cache().lock().unwrap_or_else(|e| e.into_inner()); let k = (key, scale.to_bits()); if c.map.contains_key(&k) { return; @@ -301,7 +301,7 @@ fn from_store(key: u64, scale: f64) -> Option> { /// Drop the cached segmentations of these chain keys (every scale). pub fn forget(keys: impl IntoIterator) { let keys: std::collections::HashSet = keys.into_iter().collect(); - let mut c = cache().lock().unwrap_or_else(std::sync::PoisonError::into_inner); + let mut c = cache().lock().unwrap_or_else(|e| e.into_inner()); let gone: Vec<(u64, u64)> = c.map.keys().filter(|k| keys.contains(&k.0)).copied().collect(); for k in gone { if let Some(s) = c.map.remove(&k) { @@ -313,7 +313,7 @@ pub fn forget(keys: impl IntoIterator) { /// Drop every cached segmentation (Edit ▸ Purge). pub fn purge() { - let mut c = cache().lock().unwrap_or_else(std::sync::PoisonError::into_inner); + let mut c = cache().lock().unwrap_or_else(|e| e.into_inner()); c.map.clear(); c.order.clear(); c.bytes = 0; @@ -532,11 +532,11 @@ fn frozen(params: &Params) -> Option> { let mut h = 0xcbf2_9ce4_8422_2325; fnv(&mut h, j.as_bytes()); let c = C.get_or_init(Default::default); - if let Some(d) = c.lock().unwrap_or_else(std::sync::PoisonError::into_inner).get(&h) { + if let Some(d) = c.lock().unwrap_or_else(|e| e.into_inner()).get(&h) { return Some(d.clone()); } let d = Arc::new(FrozenCache::from_json(j)?); - let mut m = c.lock().unwrap_or_else(std::sync::PoisonError::into_inner); + let mut m = c.lock().unwrap_or_else(|e| e.into_inner()); if m.len() > 8 { m.clear(); }