Skip to content

Commit 6036909

Browse files
committed
remove asynch module; move SmartLedsWriteAsync to top level
1 parent 7dbc764 commit 6036909

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

src/lib.rs

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,26 @@ pub trait SmartLedsWrite {
3636
I: Into<Self::Color>;
3737
}
3838

39-
pub mod asynch {
40-
/// An async trait that Smart Led Drivers implement
41-
///
42-
/// The amount of time each iteration of `iterator` might take is undefined.
43-
/// Drivers, where this might lead to issues, aren't expected to work in all cases.
44-
pub trait SmartLedsWriteAsync {
45-
type Error;
46-
type Color;
47-
// The async_fn_in_trait warning doesn't really matter for embedded cases because
48-
// no_std async executors don't require futures to be Send. Also, embedded-hal-async
49-
// does not have Send bounds in its traits, so the HAL functions called in
50-
// implementations of this trait wouldn't return Send futures anyway. It's
51-
// questionable if it would be desirable for embedded HALs to return a Send future
52-
// for the write function for a peripheral because you probably don't want to
53-
// write data to the same peripheral from multiple threads simultaneously and have
54-
// the data get interleaved, nor have the embedded HAL implement a synchronization
55-
// mechanism with a run time cost to avoid that.
56-
// https://github.com/rust-embedded/embedded-hal/pull/515#issuecomment-1763525962
57-
#[allow(async_fn_in_trait)]
58-
async fn write<T, I>(&mut self, iterator: T) -> Result<(), Self::Error>
59-
where
60-
T: IntoIterator<Item = I>,
61-
I: Into<Self::Color>;
62-
}
39+
/// An async trait that Smart Led Drivers implement
40+
///
41+
/// The amount of time each iteration of `iterator` might take is undefined.
42+
/// Drivers, where this might lead to issues, aren't expected to work in all cases.
43+
pub trait SmartLedsWriteAsync {
44+
type Error;
45+
type Color;
46+
// The async_fn_in_trait warning doesn't really matter for embedded cases because
47+
// no_std async executors don't require futures to be Send. Also, embedded-hal-async
48+
// does not have Send bounds in its traits, so the HAL functions called in
49+
// implementations of this trait wouldn't return Send futures anyway. It's
50+
// questionable if it would be desirable for embedded HALs to return a Send future
51+
// for the write function for a peripheral because you probably don't want to
52+
// write data to the same peripheral from multiple threads simultaneously and have
53+
// the data get interleaved, nor have the embedded HAL implement a synchronization
54+
// mechanism with a run time cost to avoid that.
55+
// https://github.com/rust-embedded/embedded-hal/pull/515#issuecomment-1763525962
56+
#[allow(async_fn_in_trait)]
57+
async fn write<T, I>(&mut self, iterator: T) -> Result<(), Self::Error>
58+
where
59+
T: IntoIterator<Item = I>,
60+
I: Into<Self::Color>;
6361
}

0 commit comments

Comments
 (0)