Skip to content

Commit

Permalink
Bring net/parser.rs up to modern up to date with modern rust patterns
Browse files Browse the repository at this point in the history
Made the following changes throughout the IP address parser:
- Replaced all uses of `is_some()` / `is_none()` with `?`.
- "Upgraded" loops wherever possible; ie, replace `while` with `for`, etc.
    - Removed all cases of manual index tracking / incrementing.
- Renamed several single-character variables with more expressive names.
- Replaced several manual control flow segments with equivalent adapters (such as `Option::filter`).
- Removed `read_seq_3`; replaced with simple sequences of `?`.
- Parser now reslices its state when consuming, rather than carrying a separate state and index variable.
- `read_digit` now uses `char::to_digit`.
- Removed unnecessary casts back and forth between u8 and u32
- Added comments throughout, especially in the complex IPv6 parsing logic.
- Added comprehensive local unit tests for the parser to validate these changes.
  • Loading branch information
Lucretiel authored and dtolnay committed Jun 30, 2020
1 parent 672b272 commit 3ab7ae3
Showing 1 changed file with 289 additions and 193 deletions.
Loading

0 comments on commit 3ab7ae3

Please sign in to comment.