stm32: i2c: Clean up conditional code a bit

By moving conditional code inside the functions, we can
reduce duplication and in one case we can even eliminate one...
This commit is contained in:
Priit Laes 2023-12-19 11:48:58 +02:00
parent 08e9a4d84a
commit fc724dd707

View File

@ -148,31 +148,20 @@ struct Timeout {
#[allow(dead_code)] #[allow(dead_code)]
impl Timeout { impl Timeout {
#[cfg(not(feature = "time"))]
#[inline] #[inline]
fn check(self) -> Result<(), Error> { fn check(self) -> Result<(), Error> {
Ok(())
}
#[cfg(feature = "time")] #[cfg(feature = "time")]
#[inline]
fn check(self) -> Result<(), Error> {
if Instant::now() > self.deadline { if Instant::now() > self.deadline {
Err(Error::Timeout) return Err(Error::Timeout);
} else { }
Ok(()) Ok(())
} }
}
#[cfg(not(feature = "time"))]
#[inline] #[inline]
fn with<R>(self, fut: impl Future<Output = Result<R, Error>>) -> impl Future<Output = Result<R, Error>> { fn with<R>(self, fut: impl Future<Output = Result<R, Error>>) -> impl Future<Output = Result<R, Error>> {
fut
}
#[cfg(feature = "time")] #[cfg(feature = "time")]
#[inline] {
fn with<R>(self, fut: impl Future<Output = Result<R, Error>>) -> impl Future<Output = Result<R, Error>> {
use futures::FutureExt; use futures::FutureExt;
embassy_futures::select::select(embassy_time::Timer::at(self.deadline), fut).map(|r| match r { embassy_futures::select::select(embassy_time::Timer::at(self.deadline), fut).map(|r| match r {
@ -180,6 +169,10 @@ impl Timeout {
embassy_futures::select::Either::Second(r) => r, embassy_futures::select::Either::Second(r) => r,
}) })
} }
#[cfg(not(feature = "time"))]
fut
}
} }
pub(crate) mod sealed { pub(crate) mod sealed {