home ~ projects ~ socials

Put A num Rust Parser In A Struct To Access Config Variables

Not sure this is a good idea. It's an experiement.

```cargo
[dependencies]
nom = "7.1.1"
nom-supreme = "0.8.0"
```

#![allow(warnings)]
use nom_supreme::error::ErrorTree;
use nom::IResult;
use nom::Parser;
use nom_supreme::final_parser::final_parser;
use nom_supreme::error::GenericErrorTree;
use nom_supreme::final_parser::Location;
use nom_supreme::final_parser::RecreateContext;
use nom::bytes::complete::tag;
use nom_supreme::parser_ext::ParserExt;

pub struct Runner {
  target: String
}

impl Runner {
  pub fn parse(self, source: &str) -> IResult<&str, &str, ErrorTree<&str>> {
    let (source, result) = tag("the ").context("parse").parse(source)?;
    let (source, result) = tag(self.target.as_str()).context("parse").parse(source)?;
    Ok((source, result))
  }
}

fn main() {
  let content = "the quick brown fox";
  let parser = Runner { target: "quick".to_string() };
  let results = parser.parse(content);
  dbg!(results);
}
Output:
[/Users/alan/.cargo/target/55/19854259915251/_active_nvim_run:35:3] results = Ok(
    (
        " brown fox",
        "quick",
    ),
)
-- end of line --