From ad6566ac9ba07d5721f819d0c0c3b685ae297bd9 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 10 Oct 2026 10:54:12 +0000 Subject: [PATCH] clippy 1.99: make the Lint job's clippy step clean With CI's exact flags (cargo clippy --all-targets -- -D warnings -A ...): - chunks_exact(8) -> as_chunks::<8>().0.iter() (16 sites), reading the [u8; 8] directly instead of try_into().unwrap(); avx_engine uses the as_chunks remainder. Same semantics: the trailing remainder is still dropped. - examples/heartbeat.rs: core::simd was removed in ced28ba; import core::hamming_distance - small ones: clone on Copy, slice fill, ? operator, needless into_iter, a no-op | 0, a 3.14 test literal (approx_constant) -> 2.5 - allow module_inception on the private spo/spo.rs reference module and field_reassign_with_default in agent_state tests - rustfmt on the 8 files this branch's edits left unformatted (the DataFusion 54 port in src/query/* and the as_chunks sites) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017YPZhKpSxN7eSxk7VH2vzB --- crates/ladybug-contract/src/container.rs | 4 +-- crates/ladybug-contract/src/wide_container.rs | 4 +-- crates/ladybug-contract/src/wire.rs | 35 +++++++------------ examples/heartbeat.rs | 2 +- src/bin/server.rs | 2 +- src/cognitive/sieve.rs | 2 +- src/cognitive/step_handler.rs | 4 +-- src/container/cache.rs | 4 +-- src/container/dn_redis.rs | 10 +++--- src/contract/envelope.rs | 10 ++++-- src/core/fingerprint.rs | 4 +-- src/core/rustynum_accel.rs | 4 +-- src/cypher_bridge.rs | 2 +- src/fabric/udp_transport.rs | 2 +- src/graph/avx_engine.rs | 6 ++-- src/graph/spo/builder.rs | 3 +- src/qualia/agent_state.rs | 1 + src/query/cognitive_udfs.rs | 12 ------- src/query/dn_tree_provider.rs | 1 - src/query/fingerprint_table.rs | 1 - src/query/graph_provider.rs | 1 - src/query/scent_scan.rs | 2 -- src/spo/jina_cache.rs | 2 +- src/spo/mod.rs | 2 ++ src/storage/bind_space.rs | 20 +++++------ src/storage/cog_redis.rs | 4 +-- src/storage/lance_persistence.rs | 4 +-- 27 files changed, 61 insertions(+), 87 deletions(-) diff --git a/crates/ladybug-contract/src/container.rs b/crates/ladybug-contract/src/container.rs index 0e91771..f9ff0b7 100644 --- a/crates/ladybug-contract/src/container.rs +++ b/crates/ladybug-contract/src/container.rs @@ -224,8 +224,8 @@ impl Container { /// Construct from byte slice (little-endian). pub fn from_bytes(bytes: &[u8; CONTAINER_BYTES]) -> Self { let mut words = [0u64; CONTAINER_WORDS]; - for (i, chunk) in bytes.chunks_exact(8).enumerate() { - words[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + for (i, chunk) in bytes.as_chunks::<8>().0.iter().enumerate() { + words[i] = u64::from_le_bytes(*chunk); } Self { words } } diff --git a/crates/ladybug-contract/src/wide_container.rs b/crates/ladybug-contract/src/wide_container.rs index c0fa778..84b33b1 100644 --- a/crates/ladybug-contract/src/wide_container.rs +++ b/crates/ladybug-contract/src/wide_container.rs @@ -272,8 +272,8 @@ impl WideContainer { /// Construct from byte slice (little-endian). pub fn from_bytes(bytes: &[u8; WIDE_BYTES]) -> Self { let mut words = [0u64; WIDE_WORDS]; - for (i, chunk) in bytes.chunks_exact(8).enumerate() { - words[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + for (i, chunk) in bytes.as_chunks::<8>().0.iter().enumerate() { + words[i] = u64::from_le_bytes(*chunk); } Self { words } } diff --git a/crates/ladybug-contract/src/wire.rs b/crates/ladybug-contract/src/wire.rs index 24916bb..ce09bec 100644 --- a/crates/ladybug-contract/src/wire.rs +++ b/crates/ladybug-contract/src/wire.rs @@ -35,7 +35,7 @@ //! ``` use crate::codebook::OpCategory; -use crate::container::{Container, CONTAINER_BYTES, CONTAINER_WORDS}; +use crate::container::{CONTAINER_BYTES, CONTAINER_WORDS, Container}; use crate::nars::TruthValue; /// Magic bytes identifying a CogPacket. @@ -129,12 +129,7 @@ impl CogPacket { // ========================================================================= /// Create a request packet with a single container payload. - pub fn request( - opcode: u16, - source_addr: u16, - target_addr: u16, - payload: Container, - ) -> Self { + pub fn request(opcode: u16, source_addr: u16, target_addr: u16, payload: Container) -> Self { let mut pkt = Self { header: [0u64; HEADER_WORDS], payload: vec![payload], @@ -149,12 +144,7 @@ impl CogPacket { } /// Create a response packet. - pub fn response( - opcode: u16, - source_addr: u16, - target_addr: u16, - payload: Container, - ) -> Self { + pub fn response(opcode: u16, source_addr: u16, target_addr: u16, payload: Container) -> Self { let mut pkt = Self::request(opcode, source_addr, target_addr, payload); pkt.set_flags(pkt.flags() | FLAG_RESPONSE); pkt.update_checksum(); @@ -273,8 +263,7 @@ impl CogPacket { } pub fn set_target_addr(&mut self, addr: u16) { - self.header[1] = (self.header[1] & 0xFFFF_0000_FFFF_FFFF) - | ((addr as u64) << 32); + self.header[1] = (self.header[1] & 0xFFFF_0000_FFFF_FFFF) | ((addr as u64) << 32); } /// Target prefix. @@ -330,8 +319,7 @@ impl CogPacket { } pub fn set_truth_value(&mut self, tv: &TruthValue) { - self.header[3] = ((tv.frequency.to_bits() as u64) << 32) - | (tv.confidence.to_bits() as u64); + self.header[3] = ((tv.frequency.to_bits() as u64) << 32) | (tv.confidence.to_bits() as u64); } // ========================================================================= @@ -381,8 +369,7 @@ impl CogPacket { pub fn set_resonance_threshold(&mut self, threshold: f32) { let quantized = ((threshold.clamp(0.0, 1.0) * 65535.0) as u64) & 0xFFFF; - self.header[5] = (self.header[5] & 0x0000_FFFF_FFFF_FFFF) - | (quantized << 48); + self.header[5] = (self.header[5] & 0x0000_FFFF_FFFF_FFFF) | (quantized << 48); } /// Fan-out degree (0-255). @@ -557,8 +544,8 @@ impl CogPacket { // Decode header let mut header = [0u64; HEADER_WORDS]; - for (i, chunk) in data[..HEADER_BYTES].chunks_exact(8).enumerate() { - header[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + for (i, chunk) in data[..HEADER_BYTES].as_chunks::<8>().0.iter().enumerate() { + header[i] = u64::from_le_bytes(*chunk); } // Verify magic @@ -594,10 +581,12 @@ impl CogPacket { let offset = HEADER_BYTES + c_idx * CONTAINER_BYTES; let mut words = [0u64; CONTAINER_WORDS]; for (i, chunk) in data[offset..offset + CONTAINER_BYTES] - .chunks_exact(8) + .as_chunks::<8>() + .0 + .iter() .enumerate() { - words[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + words[i] = u64::from_le_bytes(*chunk); } payload.push(Container { words }); } diff --git a/examples/heartbeat.rs b/examples/heartbeat.rs index 8c6a4db..60a762a 100644 --- a/examples/heartbeat.rs +++ b/examples/heartbeat.rs @@ -15,7 +15,7 @@ use std::time::Instant; use ladybug::cognitive::{GateState, get_gate_state}; use ladybug::core::Fingerprint; -use ladybug::core::simd::hamming_distance; +use ladybug::core::hamming_distance; use ladybug::nars::TruthValue; use ladybug::storage::{Addr, BindSpace, FINGERPRINT_WORDS}; diff --git a/src/bin/server.rs b/src/bin/server.rs index 8088809..fd49629 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -1848,7 +1848,7 @@ fn addr_label(bs: &BindSpace, addr: Addr) -> Option { /// Body: {"source": "0x8000", "max_hops": 3, "verb": "0x0700", "limit": 100} fn handle_graph_traverse(body: &str, state: &SharedState, format: ResponseFormat) -> Vec { let source_raw = extract_json_hex_u16(body, "source").unwrap_or(0x8000); - let max_hops = extract_json_usize(body, "max_hops").unwrap_or(3) as usize; + let max_hops = extract_json_usize(body, "max_hops").unwrap_or(3); let verb_raw = extract_json_hex_u16(body, "verb"); let limit = extract_json_usize(body, "limit").unwrap_or(1000); diff --git a/src/cognitive/sieve.rs b/src/cognitive/sieve.rs index 7062d28..3b97888 100644 --- a/src/cognitive/sieve.rs +++ b/src/cognitive/sieve.rs @@ -422,7 +422,7 @@ mod tests { #[test] fn test_nars_revision_single() { let tv = TruthValue::new(0.8, 0.7); - let merged = SocraticSieve::nars_revision(&[tv.clone()]); + let merged = SocraticSieve::nars_revision(&[tv]); assert!((merged.frequency - tv.frequency).abs() < 0.01); } diff --git a/src/cognitive/step_handler.rs b/src/cognitive/step_handler.rs index 1ea8b98..390f3b7 100644 --- a/src/cognitive/step_handler.rs +++ b/src/cognitive/step_handler.rs @@ -457,8 +457,8 @@ fn extract_fingerprint(input: &Value) -> Result { } let mut data = [0u64; crate::FINGERPRINT_U64]; - for (i, chunk) in bytes.chunks_exact(8).take(crate::FINGERPRINT_U64).enumerate() { - data[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + for (i, chunk) in bytes.as_chunks::<8>().0.iter().take(crate::FINGERPRINT_U64).enumerate() { + data[i] = u64::from_le_bytes(*chunk); } return Ok(Fingerprint::from_raw(data)); } diff --git a/src/container/cache.rs b/src/container/cache.rs index 84b1204..7ee9487 100644 --- a/src/container/cache.rs +++ b/src/container/cache.rs @@ -207,9 +207,7 @@ impl ContainerCache { /// Clear all dirty bits. pub fn clear_all_dirty(&mut self) { - for w in &mut self.dirty { - *w = 0; - } + self.dirty.fill(0); } /// Append a new container, growing the cache by one slot. diff --git a/src/container/dn_redis.rs b/src/container/dn_redis.rs index 0d23881..a2b19e2 100644 --- a/src/container/dn_redis.rs +++ b/src/container/dn_redis.rs @@ -189,9 +189,7 @@ pub fn cog_record_from_bytes(data: &[u8]) -> Option { let meta = parse_container(&data[..super::CONTAINER_BYTES])?; // Parse content - let content = parse_container( - &data[super::CONTAINER_BYTES..2 * super::CONTAINER_BYTES], - )?; + let content = parse_container(&data[super::CONTAINER_BYTES..2 * super::CONTAINER_BYTES])?; Some(CogRecord { meta, content }) } @@ -221,11 +219,13 @@ fn parse_container(data: &[u8]) -> Option { } let mut words = [0u64; super::CONTAINER_WORDS]; for (i, chunk) in data - .chunks_exact(8) + .as_chunks::<8>() + .0 + .iter() .enumerate() .take(super::CONTAINER_WORDS) { - words[i] = u64::from_le_bytes(chunk.try_into().ok()?); + words[i] = u64::from_le_bytes(*chunk); } Some(Container { words }) } diff --git a/src/contract/envelope.rs b/src/contract/envelope.rs index 9b5404f..3df4361 100644 --- a/src/contract/envelope.rs +++ b/src/contract/envelope.rs @@ -65,8 +65,14 @@ pub fn deserialize_fingerprint(bytes: &[u8]) -> Option<[u64; FINGERPRINT_WORDS]> return None; } let mut fp = [0u64; FINGERPRINT_WORDS]; - for (i, chunk) in bytes.chunks_exact(8).take(FINGERPRINT_WORDS).enumerate() { - fp[i] = u64::from_le_bytes(chunk.try_into().ok()?); + for (i, chunk) in bytes + .as_chunks::<8>() + .0 + .iter() + .take(FINGERPRINT_WORDS) + .enumerate() + { + fp[i] = u64::from_le_bytes(*chunk); } Some(fp) } diff --git a/src/core/fingerprint.rs b/src/core/fingerprint.rs index 0ff4c98..eb415f1 100644 --- a/src/core/fingerprint.rs +++ b/src/core/fingerprint.rs @@ -31,8 +31,8 @@ impl Fingerprint { } let mut data = [0u64; FINGERPRINT_U64]; - for (i, chunk) in bytes.chunks_exact(8).enumerate() { - data[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + for (i, chunk) in bytes.as_chunks::<8>().0.iter().enumerate() { + data[i] = u64::from_le_bytes(*chunk); } Ok(Self { data }) } diff --git a/src/core/rustynum_accel.rs b/src/core/rustynum_accel.rs index a9d07e3..05f642b 100644 --- a/src/core/rustynum_accel.rs +++ b/src/core/rustynum_accel.rs @@ -151,8 +151,8 @@ pub fn container_bundle(items: &[&Container]) -> Container { debug_assert_eq!(result_bytes.len(), CONTAINER_WORDS * 8); // Write bytes back into container words - for (i, chunk) in result_bytes.chunks_exact(8).enumerate() { - container.words[i] = u64::from_ne_bytes(chunk.try_into().unwrap()); + for (i, chunk) in result_bytes.as_chunks::<8>().0.iter().enumerate() { + container.words[i] = u64::from_ne_bytes(*chunk); } container diff --git a/src/cypher_bridge.rs b/src/cypher_bridge.rs index 4fa7434..e04a957 100644 --- a/src/cypher_bridge.rs +++ b/src/cypher_bridge.rs @@ -851,7 +851,7 @@ mod tests { fn test_parse_cypher_literal() { assert_eq!(parse_cypher_literal("'hello'"), CypherValue::String("hello".to_string())); assert_eq!(parse_cypher_literal("42"), CypherValue::Int(42)); - assert_eq!(parse_cypher_literal("3.14"), CypherValue::Float(3.14)); + assert_eq!(parse_cypher_literal("2.5"), CypherValue::Float(2.5)); assert_eq!(parse_cypher_literal("true"), CypherValue::Bool(true)); assert_eq!(parse_cypher_literal("null"), CypherValue::Null); } diff --git a/src/fabric/udp_transport.rs b/src/fabric/udp_transport.rs index 7371646..40d7383 100644 --- a/src/fabric/udp_transport.rs +++ b/src/fabric/udp_transport.rs @@ -133,7 +133,7 @@ impl FramePacket { // Convert bytes to u64 words for frame decode let frame_bytes = &data[8..8 + FRAME_BYTES]; let mut words = [0u64; FRAME_WORDS]; - for (i, chunk) in frame_bytes.chunks_exact(8).enumerate() { + for (i, chunk) in frame_bytes.as_chunks::<8>().0.iter().enumerate() { if i < FRAME_WORDS { words[i] = u64::from_le_bytes([ chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], chunk[5], chunk[6], chunk[7], diff --git a/src/graph/avx_engine.rs b/src/graph/avx_engine.rs index aa22e59..46855c3 100644 --- a/src/graph/avx_engine.rs +++ b/src/graph/avx_engine.rs @@ -330,11 +330,9 @@ pub fn batched_query( let mut matches = Vec::new(); // Process 8 edges at a time - let chunks = graph.edges.chunks_exact(8); - let remainder = chunks.remainder(); + let (chunks, remainder) = graph.edges.as_chunks::<8>(); - for (chunk_idx, chunk) in chunks.enumerate() { - let edges: &[[u64; WORDS]; 8] = chunk.try_into().unwrap(); + for (chunk_idx, edges) in chunks.iter().enumerate() { let distances = batch_hamming_8(&pattern_words, edges); for (i, &dist) in distances.iter().enumerate() { diff --git a/src/graph/spo/builder.rs b/src/graph/spo/builder.rs index d3a3aa1..bb3ac7b 100644 --- a/src/graph/spo/builder.rs +++ b/src/graph/spo/builder.rs @@ -161,8 +161,7 @@ impl SpoBuilder { // W1: type info with geometry=Spo(6) meta.words[W_TYPE] = (GEOMETRY_SPO as u64) << 16 - | 1u64 << 8 // container count = 1 content - | 0u64; // node_kind = 0 (generic) + | 1u64 << 8; // container count = 1 content; node_kind = 0 (generic) // W4-W7: NARS truth meta.words[W_NARS_BASE] = nars.frequency.to_bits() as u64; diff --git a/src/qualia/agent_state.rs b/src/qualia/agent_state.rs index ce41c9c..1c40d3b 100644 --- a/src/qualia/agent_state.rs +++ b/src/qualia/agent_state.rs @@ -842,6 +842,7 @@ fn rung_description(rung: RungLevel) -> &'static str { // ───────────────────────────────────────────────────────────── #[cfg(test)] +#[allow(clippy::field_reassign_with_default)] mod tests { use super::*; use crate::container::Container; diff --git a/src/query/cognitive_udfs.rs b/src/query/cognitive_udfs.rs index 68d6aa2..a60e23b 100644 --- a/src/query/cognitive_udfs.rs +++ b/src/query/cognitive_udfs.rs @@ -195,7 +195,6 @@ impl Default for HammingUdf { } impl ScalarUDFImpl for HammingUdf { - fn name(&self) -> &str { "hamming" } @@ -306,7 +305,6 @@ impl Default for SimilarityUdf { } impl ScalarUDFImpl for SimilarityUdf { - fn name(&self) -> &str { "similarity" } @@ -418,7 +416,6 @@ impl Default for PopcountUdf { } impl ScalarUDFImpl for PopcountUdf { - fn name(&self) -> &str { "popcount" } @@ -532,7 +529,6 @@ impl Default for XorBindUdf { } impl ScalarUDFImpl for XorBindUdf { - fn name(&self) -> &str { "xor_bind" } @@ -600,7 +596,6 @@ impl Default for ExtractScentUdf { } impl ScalarUDFImpl for ExtractScentUdf { - fn name(&self) -> &str { "extract_scent" } @@ -689,7 +684,6 @@ impl Default for ScentDistanceUdf { } impl ScalarUDFImpl for ScentDistanceUdf { - fn name(&self) -> &str { "scent_distance" } @@ -790,7 +784,6 @@ impl Default for NarsDeductionUdf { } impl ScalarUDFImpl for NarsDeductionUdf { - fn name(&self) -> &str { "nars_deduction" } @@ -854,7 +847,6 @@ impl Default for NarsInductionUdf { } impl ScalarUDFImpl for NarsInductionUdf { - fn name(&self) -> &str { "nars_induction" } @@ -918,7 +910,6 @@ impl Default for NarsAbductionUdf { } impl ScalarUDFImpl for NarsAbductionUdf { - fn name(&self) -> &str { "nars_abduction" } @@ -988,7 +979,6 @@ impl Default for NarsRevisionUdf { } impl ScalarUDFImpl for NarsRevisionUdf { - fn name(&self) -> &str { "nars_revision" } @@ -1107,7 +1097,6 @@ impl Default for MembraneEncodeUdf { } impl ScalarUDFImpl for MembraneEncodeUdf { - fn name(&self) -> &str { "membrane_encode" } @@ -1191,7 +1180,6 @@ impl Default for MembraneDecodeUdf { } impl ScalarUDFImpl for MembraneDecodeUdf { - fn name(&self) -> &str { "membrane_decode" } diff --git a/src/query/dn_tree_provider.rs b/src/query/dn_tree_provider.rs index c8bf0be..64590cf 100644 --- a/src/query/dn_tree_provider.rs +++ b/src/query/dn_tree_provider.rs @@ -97,7 +97,6 @@ impl DnTreeTableProvider { #[async_trait] impl TableProvider for DnTreeTableProvider { - fn schema(&self) -> SchemaRef { self.schema.clone() } diff --git a/src/query/fingerprint_table.rs b/src/query/fingerprint_table.rs index 2a4e915..d674169 100644 --- a/src/query/fingerprint_table.rs +++ b/src/query/fingerprint_table.rs @@ -110,7 +110,6 @@ impl std::fmt::Debug for FingerprintTableProvider { #[async_trait] impl TableProvider for FingerprintTableProvider { - fn schema(&self) -> SchemaRef { self.schema.clone() } diff --git a/src/query/graph_provider.rs b/src/query/graph_provider.rs index 3b3caee..e9fce08 100644 --- a/src/query/graph_provider.rs +++ b/src/query/graph_provider.rs @@ -141,7 +141,6 @@ impl fmt::Debug for EdgeTableProvider { #[async_trait] impl TableProvider for EdgeTableProvider { - fn schema(&self) -> SchemaRef { self.schema.clone() } diff --git a/src/query/scent_scan.rs b/src/query/scent_scan.rs index 925e38e..c26fbff 100644 --- a/src/query/scent_scan.rs +++ b/src/query/scent_scan.rs @@ -538,7 +538,6 @@ impl HammingDistanceUdf { } impl ScalarUDFImpl for HammingDistanceUdf { - fn name(&self) -> &str { "hamming_distance" } @@ -648,7 +647,6 @@ impl SimilarityUdf { } impl ScalarUDFImpl for SimilarityUdf { - fn name(&self) -> &str { "similarity" } diff --git a/src/spo/jina_cache.rs b/src/spo/jina_cache.rs index c135543..e779f84 100644 --- a/src/spo/jina_cache.rs +++ b/src/spo/jina_cache.rs @@ -213,7 +213,7 @@ impl JinaCache { let texts_to_fetch: Vec<&str> = to_fetch.iter().map(|(_, t)| *t).collect(); let embeddings = self.call_jina_api_batch(&texts_to_fetch)?; - for ((i, text), embedding) in to_fetch.into_iter().zip(embeddings.into_iter()) { + for ((i, text), embedding) in to_fetch.into_iter().zip(embeddings) { self.stats.api_calls += 1; let fingerprint = fingerprint_from_jina_embedding(&embedding); diff --git a/src/spo/mod.rs b/src/spo/mod.rs index 4768c28..f1c7bea 100644 --- a/src/spo/mod.rs +++ b/src/spo/mod.rs @@ -39,6 +39,8 @@ pub mod cognitive_codebook; pub mod codebook_hydration; pub mod crystal_lm; pub mod sentence_crystal; +// spo/spo.rs is the private reference implementation (see CLAUDE.md §2). +#[allow(clippy::module_inception)] mod spo; pub use jina_api::{JinaClient, jina_embed_curl}; diff --git a/src/storage/bind_space.rs b/src/storage/bind_space.rs index d3fa7a8..4b6ba49 100644 --- a/src/storage/bind_space.rs +++ b/src/storage/bind_space.rs @@ -1780,8 +1780,8 @@ impl BindSpace { .collect(); let result_bytes = ndarray::Array::::hdc_bundle_byte_slices(&slices); let mut fp = [0u64; FINGERPRINT_WORDS]; - for (i, chunk) in result_bytes.chunks_exact(8).enumerate() { - fp[i] = u64::from_ne_bytes(chunk.try_into().unwrap()); + for (i, chunk) in result_bytes.as_chunks::<8>().0.iter().enumerate() { + fp[i] = u64::from_ne_bytes(*chunk); } Some(fp) } @@ -2339,8 +2339,8 @@ impl BindSpace { if let Some(node) = self.read_mut(addr) { let mut buf = crate::core::rustynum_accel::view_u64_as_bytes(&node.fingerprint).to_vec(); ndarray::hpc::holo::focus_xor(&mut buf, mask_x, mask_y, mask_z, value); - for (i, chunk) in buf.chunks_exact(8).enumerate() { - node.fingerprint[i] = u64::from_ne_bytes(chunk.try_into().unwrap()); + for (i, chunk) in buf.as_chunks::<8>().0.iter().enumerate() { + node.fingerprint[i] = u64::from_ne_bytes(*chunk); } self.dirty.set(addr.0); } @@ -2373,8 +2373,8 @@ impl BindSpace { if let Some(node) = self.read_mut(addr) { let mut buf = crate::core::rustynum_accel::view_u64_as_bytes(&node.fingerprint).to_vec(); ndarray::hpc::holo::focus_bind_phase(&mut buf, mask_x, mask_y, mask_z, concept_vec); - for (i, chunk) in buf.chunks_exact(8).enumerate() { - node.fingerprint[i] = u64::from_ne_bytes(chunk.try_into().unwrap()); + for (i, chunk) in buf.as_chunks::<8>().0.iter().enumerate() { + node.fingerprint[i] = u64::from_ne_bytes(*chunk); } self.dirty.set(addr.0); } @@ -2385,8 +2385,8 @@ impl BindSpace { if let Some(node) = self.read_mut(addr) { let mut buf = crate::core::rustynum_accel::view_u64_as_bytes(&node.fingerprint).to_vec(); ndarray::hpc::holo::focus_unbind_phase(&mut buf, mask_x, mask_y, mask_z, concept_vec); - for (i, chunk) in buf.chunks_exact(8).enumerate() { - node.fingerprint[i] = u64::from_ne_bytes(chunk.try_into().unwrap()); + for (i, chunk) in buf.as_chunks::<8>().0.iter().enumerate() { + node.fingerprint[i] = u64::from_ne_bytes(*chunk); } self.dirty.set(addr.0); } @@ -2397,8 +2397,8 @@ impl BindSpace { if let Some(node) = self.read_mut(addr) { let mut buf = crate::core::rustynum_accel::view_u64_as_bytes(&node.fingerprint).to_vec(); ndarray::hpc::holo::focus_xor_auto(&mut buf, mask_x, mask_y, mask_z, value); - for (i, chunk) in buf.chunks_exact(8).enumerate() { - node.fingerprint[i] = u64::from_ne_bytes(chunk.try_into().unwrap()); + for (i, chunk) in buf.as_chunks::<8>().0.iter().enumerate() { + node.fingerprint[i] = u64::from_ne_bytes(*chunk); } self.dirty.set(addr.0); } diff --git a/src/storage/cog_redis.rs b/src/storage/cog_redis.rs index dac399e..5f3df12 100644 --- a/src/storage/cog_redis.rs +++ b/src/storage/cog_redis.rs @@ -660,10 +660,8 @@ impl CogRedis { return None; } (v, Tier::Fluid) - } else if let Some(v) = self.nodes.get_mut(&addr) { - (v, Tier::Node) } else { - return None; + (self.nodes.get_mut(&addr)?, Tier::Node) }; // Touch and maybe promote diff --git a/src/storage/lance_persistence.rs b/src/storage/lance_persistence.rs index 345cebf..f0ab69c 100644 --- a/src/storage/lance_persistence.rs +++ b/src/storage/lance_persistence.rs @@ -135,8 +135,8 @@ fn fp_to_le_bytes(fp: &[u64; FINGERPRINT_WORDS]) -> Vec { /// Convert little-endian bytes back to [u64; FINGERPRINT_WORDS]. fn fp_from_le_bytes(bytes: &[u8]) -> [u64; FINGERPRINT_WORDS] { let mut fp = [0u64; FINGERPRINT_WORDS]; - for (i, chunk) in bytes.chunks_exact(8).enumerate() { - fp[i] = u64::from_le_bytes(chunk.try_into().unwrap()); + for (i, chunk) in bytes.as_chunks::<8>().0.iter().enumerate() { + fp[i] = u64::from_le_bytes(*chunk); } fp }