Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Enum Support #13

Merged
merged 20 commits into from May 5, 2022
Merged

Feature: Enum Support #13

merged 20 commits into from May 5, 2022

Conversation

du-toit
Copy link
Owner

@du-toit du-toit commented May 5, 2022

This PR introduces encoding and decoding support for enum types and their variants.

Implementation

Consider this enum:

enum Enum {
    Unit,
    NewType(i32),
    Tuple(i32, i32),
    Struct { a: i32, b: i32 }
}

Each variant is encoded as such:

  • Enum::Unit => 4:Unit.
  • Enum::NewType(50) => d 7:NewType i50e e.
  • Enum::Tuple(25, 50) => d 5:Tuple l i25e i50e e e
  • Enum::Struct { a: 25, b: 50 } => d 6:Struct d 1:a i25e 1:b i50e e e

Note that I only added whitespace to the examples above so they are more readable.

I believe these changes are backwards-compatible, since no items were added or removed from the API. Because of this, I've bumped the package version to 0.5.4 and updated the readme accordingly.

Upon a successful merge, this PR closes #2.

@du-toit du-toit added the enhancement Adding new behavior or change the way an existing feature works. label May 5, 2022
@du-toit du-toit requested a review from Halfnelson0 May 5, 2022 10:48
@Halfnelson0 Halfnelson0 merged commit 2c53ef3 into master May 5, 2022
@Halfnelson0 Halfnelson0 deleted the feat/enum-support branch May 5, 2022 10:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Adding new behavior or change the way an existing feature works.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Proper unit and newtype_variant support
2 participants