rust-bakery / nom

Rust parser combinator framework
MIT License
9.18k stars 792 forks source link

The `fold` function is missing or the `example/string.rs` needs to be updated #1671

Open INFCode opened 1 year ago

INFCode commented 1 year ago

Prerequisites

Here are a few things you should provide to help me understand the issue:

Issue

It seems that the fold function (not the fold_many* functions) is not present in the the document or in the choosing a combinator manual.

However, it is used in the example of parsing a string, which is pointed to by the recipe. Also I can actually find the definition of fold in the multi module

I tried to copy that example code into a test project and it failed to compile, with the following error:

error[E0432]: unresolved import `nom::multi::fold`
  --> src/parse_string.rs:17:5
   |
17 | use nom::multi::fold;
   |     ^^^^^^^^^^^^^^^^ no `fold` in `multi`

I am relatively new to rust, but I believe there should be some kind of inconsistency here. Either there's missing documentation, or the example needs to be updated.

Xiretza commented 1 year ago

The master branch contains examples for the code found on master (which now includes the fold combinator). For examples for nom 7.x, check the 7.x branch or, better yet, the exact tag of your nom version.

INFCode commented 1 year ago

Thank you for pointing this out. Based on what you said, I think I've figured out what's happening here: the recipe manual is directly linking to the example file through its path on Github (https://github.com/rust-bakery/nom/blob/main/examples/string.rs), which defaults to the one in the master branch. However, as a 7.x manual, the permalink to the example (https://github.com/rust-bakery/nom/blob/869f8972a4383b13cf89574fda28cb7dbfd56517/examples/string.rs) should be used instead. Could you please update the link so that others will not get confused by this? Thanks a lot!