remove trait bounds from sans-IO methods, for flexibility in extension crates #22
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Libraries providing extensions traits for different devices using the ht16k33 (e.g.
adafruit-7segment
) become infected with HAL-specific trait bounds.Solution
This PR moves the sans-IO methods to a separate
impl
block with no restriction on the I2C parameter (e.g. not tied to a specific HAL trait).The thought being: if someone wants to use a different HAL, then they can patch only this crate
ht16k33
and not every crate that extends its' functionality through data manipulation helpers. (e.g. patchht16k33
, and not bothht16k33
andadafruit-7segment
)The change is small (please check the diff of the "removed"/"added" sections), but let me know if you have any issues with merging this in.
NOTE: I left the
new
anddestroy
functions inside the HAL trait bounds (conservative approach) since the end user will still need to satisfying the trait bounds when constructing the display.