diff --git a/CHANGELOG.md b/CHANGELOG.md index b09ec494..956fe90b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +- Relax lifetime constraint on `I2CTransfer::transfer` `msgs` reference + ## [v0.6.1] - 2024-05-09 - Properly ellide the start bit when sending a series of I2C messages as a diff --git a/src/core.rs b/src/core.rs index 10a3abbb..b9456e44 100644 --- a/src/core.rs +++ b/src/core.rs @@ -137,7 +137,7 @@ pub trait I2CTransfer<'a> { /// Performs multiple serially chained I2C read/write transactions. On /// success the return code is the number of successfully executed /// transactions - fn transfer(&mut self, msgs: &'a mut [Self::Message]) -> Result; + fn transfer(&mut self, msgs: &mut [Self::Message]) -> Result; } /// Read/Write I2C message diff --git a/src/linux.rs b/src/linux.rs index 1c68be37..1917eacd 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -299,7 +299,7 @@ impl<'a> I2CTransfer<'a> for LinuxI2CDevice { type Message = LinuxI2CMessage<'a>; /// Issue the provided sequence of I2C transactions - fn transfer(&mut self, messages: &'a mut [Self::Message]) -> Result { + fn transfer(&mut self, messages: &mut [Self::Message]) -> Result { let msg_type = |flag: u16| flag & I2CMessageFlags::READ.bits(); let mut prev_msg_type = None; for msg in messages.iter_mut() { @@ -335,7 +335,7 @@ impl<'a> I2CTransfer<'a> for LinuxI2CBus { type Message = LinuxI2CMessage<'a>; /// Issue the provided sequence of I2C transactions - fn transfer(&mut self, msgs: &'a mut [Self::Message]) -> Result { + fn transfer(&mut self, msgs: &mut [Self::Message]) -> Result { ffi::i2c_rdwr(self.as_raw_fd(), msgs).map_err(From::from) } } diff --git a/src/mock.rs b/src/mock.rs index ff52e803..45d3fb29 100644 --- a/src/mock.rs +++ b/src/mock.rs @@ -152,7 +152,7 @@ where type Message = MockI2CMessage<'a>; /// Issue the provided sequence of I2C transactions - fn transfer(&mut self, messages: &'a mut [Self::Message]) -> Result { + fn transfer(&mut self, messages: &mut [Self::Message]) -> Result { for msg in messages.iter_mut() { match &mut msg.msg_type { MessageType::Read(data) => self.read(data)?,