Skip to content

Commit ac965a3

Browse files
committed
separate OutputPin.toggle() into ToggleableOutputPin, provide default impl for StatefulOutputPin
1 parent 3f61ef2 commit ac965a3

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/digital.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,26 @@ pub trait OutputPin {
1111

1212
/// Output pin that can read its output state
1313
#[cfg(feature = "unproven")]
14-
trait StatefulOutputPin: OutputPin {
14+
trait StatefulOutputPin {
1515
/// Is the pin set to high?
1616
fn is_set_high(&self) -> bool;
1717

1818
/// Is the pin set to low?
1919
fn is_set_low(&self) -> bool;
20+
}
21+
22+
/// Output pin that can be toggled
23+
#[cfg(feature = "unproven")]
24+
trait ToggleableOutputPin {
25+
/// Toggle pin output
26+
fn toggle(&mut self);
27+
}
2028

29+
/// If you can read **and** write the output state, a pin is
30+
/// toggleable by software. You may override the `toggle()` method
31+
/// with a hardware implementation.
32+
#[cfg(feature = "unproven")]
33+
impl<PIN: OutputPin + StatefulOutputPin> ToggleableOutputPin for PIN {
2134
/// Toggle pin output
2235
fn toggle(&mut self) {
2336
if self.is_set_low() {

0 commit comments

Comments
 (0)