* The two methods I've been using, for some context: 1: What you suggest (I think?), and, 2: more conveniently in most cases, sometimes wrapped in enum methods: ```rust impl Pin { /// Set the pin's output voltage to high. Sets the `BSRR` register. Atomic. pub fn set_high(&mut self) { // ... } } /// Set a pin state (ie set high or low output voltage level). See also `set_high()` and /// `set_low()`. Sets the `BSRR` register. Atomic. /// Does not require a `Pin` struct. pub fn set_state(port: Port, pin: u8, value: PinState) { let offset = match value { PinState::Low => 16, PinState::High => 0, }; set_state!( // macro that sets BSRR as in your example ); } ```