From ebf474782f2194f55c0566874d6083d4dfbb20c1 Mon Sep 17 00:00:00 2001 From: Mike MacCana Date: Wed, 23 Sep 2026 00:30:45 +0000 Subject: [PATCH] vault-strategy (Quasar): index the holdings bytes instead of chunking them Clippy 1.98 added chunks_exact_to_as_chunks, which rejects chunks_exact(8) and chunks_exact_mut(8) under -D warnings and turned the Quasar lint job red. Slicing by index satisfies it without as_chunks, which needs Rust 1.88 and so may not exist in the platform-tools compiler the SBF build uses. Claude-Session: https://claude.ai/code/session_01GYKt1Zd3PRmpsFJqTHv8y8 --- .../quasar/vault-strategy/src/state/strategy.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/finance/vault-strategy/quasar/vault-strategy/src/state/strategy.rs b/finance/vault-strategy/quasar/vault-strategy/src/state/strategy.rs index 4b234a1c..e704f51e 100644 --- a/finance/vault-strategy/quasar/vault-strategy/src/state/strategy.rs +++ b/finance/vault-strategy/quasar/vault-strategy/src/state/strategy.rs @@ -17,9 +17,10 @@ pub const ASSET_HOLDINGS_BYTES: usize = MAX_ASSETS as usize * 8; /// Decode `Strategy::asset_holdings` into one amount per asset index. pub fn read_asset_holdings(bytes: &[u8; ASSET_HOLDINGS_BYTES]) -> [u64; MAX_ASSETS as usize] { let mut holdings = [0u64; MAX_ASSETS as usize]; - for (holding, chunk) in holdings.iter_mut().zip(bytes.chunks_exact(8)) { + for (index, holding) in holdings.iter_mut().enumerate() { + let start = index * 8; let mut word = [0u8; 8]; - word.copy_from_slice(chunk); + word.copy_from_slice(&bytes[start..start + 8]); *holding = u64::from_le_bytes(word); } holdings @@ -28,8 +29,9 @@ pub fn read_asset_holdings(bytes: &[u8; ASSET_HOLDINGS_BYTES]) -> [u64; MAX_ASSE /// Encode one amount per asset index into `Strategy::asset_holdings`. pub fn write_asset_holdings(holdings: &[u64; MAX_ASSETS as usize]) -> [u8; ASSET_HOLDINGS_BYTES] { let mut bytes = [0u8; ASSET_HOLDINGS_BYTES]; - for (chunk, holding) in bytes.chunks_exact_mut(8).zip(holdings) { - chunk.copy_from_slice(&holding.to_le_bytes()); + for (index, holding) in holdings.iter().enumerate() { + let start = index * 8; + bytes[start..start + 8].copy_from_slice(&holding.to_le_bytes()); } bytes }