Implement Into/From<u8>for MouseButton and Into/From<u16> for KeyCode - #657
Open
andybarron wants to merge 7 commits into
Open
Implement Into/From<u8>for MouseButton and Into/From<u16> for KeyCode#657andybarron wants to merge 7 commits into
andybarron wants to merge 7 commits into
Conversation
Owner
|
Thanks for PR! I am not neccesserily against the change, but I want to mention that |
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
best reviewed with whitespace diffs disabled (link).
summary
this PR implements conversion between
MouseButton/KeyCodeand their underlying primitive types (with tests). this should make it easier to serialize & deserialize mouse/key codes for rebinding game controls, etc.the specific trait implementations in question are:
impl From<u8> for MouseButtonimpl From<MouseButton> for u8impl From<u16> for KeyCodeimpl From<KeyCode> for u16implementation notes
convertible_enum!. currently, rust lets you safely convert an enum to its underlying repr, but not vice versa (other thantransmutetricks which cause UB on invalid values). to the best of my knowledge, this is the best solution in terms of minimizing boilerplate and not bringing in something likenum_enum(which pulls inproc_macro, which is just overkill for this IMO).Fromrather thanTryFromsince the enums in question both have anUnknownvariant to catch invalid values already. withTryFrom, a successful conversion could still haveUnknownas the value, which felt weird and redundant to me.