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