From 3b200f6475fed075ea71b4db65a5f8e57dc751e9 Mon Sep 17 00:00:00 2001 From: Noah Pederson Date: Wed, 17 Jan 2024 16:16:35 -0600 Subject: [PATCH] More safe handling of usize -> isize conversion with sane failure mode --- src/mock.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mock.rs b/src/mock.rs index d74ae0e7..ff52e803 100644 --- a/src/mock.rs +++ b/src/mock.rs @@ -6,6 +6,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. use core::{I2CDevice, I2CMessage, I2CTransfer}; +use std::convert::TryFrom; use std::io; /// I2C mock result type @@ -44,7 +45,12 @@ impl I2CRegisterMap { fn read(&mut self, data: &mut [u8]) -> I2CResult<()> { let len = data.len(); data.clone_from_slice(&self.registers[self.offset..(self.offset + len)]); - println!("READ | 0x{:X} : {:?}", self.offset as isize - data.len() as isize, data); + println!( + "READ | 0x{:X} : {:?}", + isize::try_from(self.offset).unwrap_or(0xBAD) + - isize::try_from(data.len()).unwrap_or(0xBAD), + data + ); Ok(()) }