From 949822f26cc2cf28c49d548836ad665c7b6241b1 Mon Sep 17 00:00:00 2001 From: Emilia Date: Sat, 4 Jan 2025 20:23:09 -0500 Subject: [PATCH] no direct slice indexing --- plate-tool-eframe/src/plate.rs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/plate-tool-eframe/src/plate.rs b/plate-tool-eframe/src/plate.rs index e941e95..382b912 100644 --- a/plate-tool-eframe/src/plate.rs +++ b/plate-tool-eframe/src/plate.rs @@ -148,12 +148,14 @@ fn calculate_shading_for_wells( x.volume += 5.0; x.color = PALETTE.get_ordered(transfer.id, ordered_ids); } else { - well_infos - [(well.row - 1) as usize * columns as usize + (well.col - 1) as usize] = - Some(WellInfo::new( + if let Some(mut wi) = well_infos.get_mut( + (well.row - 1) as usize * columns as usize + (well.col - 1) as usize, + ) { + *wi = Some(WellInfo::new( 5.0, PALETTE.get_ordered(transfer.id, ordered_ids), )); + } } } } @@ -276,17 +278,20 @@ fn add_plate_sub( }; if let Some(wells) = current_transfer_wells { for w in wells { - let well_info = &mut well_infos[(w.0 - 1) * columns as usize + (w.1 - 1)]; - let volume = well_info.map(|x| x.volume).unwrap_or(0.0) - + current_transfer_state - .and_then(|x| x.lock().ok()) - .map(|x| x.volume) - .unwrap_or(0.0); + if let Some(mut well_info) = + well_infos.get_mut((w.0 - 1) * columns as usize + (w.1 - 1)) + { + let volume = well_info.map(|x| x.volume).unwrap_or(0.0) + + current_transfer_state + .and_then(|x| x.lock().ok()) + .map(|x| x.volume) + .unwrap_or(0.0); - *well_info = Some(WellInfo { - color: [255.0, 255.0, 255.0], - volume: 1.0, - }) + *well_info = Some(WellInfo { + color: [255.0, 255.0, 255.0], + volume: 1.0, + }) + } } } well_infos