#futures #await #parser-combinator #async-await #future

futures-await-synom

Temporary fork of synom for the futures-await crate

1 unstable release

Uses old Rust 2015

0.12.0 Oct 28, 2017

#6 in #futures-await

Download history 64/week @ 2023-11-02 59/week @ 2023-11-09 61/week @ 2023-11-16 64/week @ 2023-11-23 41/week @ 2023-11-30 57/week @ 2023-12-07 61/week @ 2023-12-14 68/week @ 2023-12-21 36/week @ 2023-12-28 44/week @ 2024-01-04 59/week @ 2024-01-11 54/week @ 2024-01-18 45/week @ 2024-01-25 29/week @ 2024-02-01 58/week @ 2024-02-08 77/week @ 2024-02-15

216 downloads per month
Used in futures-await-syn

MIT/Apache

68KB
1.5K SLoC

futures-await-syn

This crate is a temporary fork of dtolnay/syn. The syn repository isn't ready for publication yet but we'd like to publish the futures-await crate. This is a temporary fork that will only be maintained for the futures-await crate and it will be unmaintained as soon as syn is published upstream.

License

Licensed under either of

at your option.


lib.rs:

Adapted from nom by removing the IPResult::Incomplete variant which:

  • we don't need,
  • is an unintuitive footgun when working with non-streaming use cases, and
  • more than doubles compilation time.

Whitespace handling strategy

As (sy)nom is a parser combinator library, the parsers provided here and that you implement yourself are all made up of successively more primitive parsers, eventually culminating in a small number of fundamental parsers that are implemented in Rust. Among these are punct! and keyword!.

All synom fundamental parsers (those not combined out of other parsers) should be written to skip over leading whitespace in their input. This way, as long as every parser eventually boils down to some combination of fundamental parsers, we get correct whitespace handling at all levels for free.

For our use case, this strategy is a huge improvement in usability, correctness, and compile time over nom's ws! strategy.

Dependencies

~225KB