5 releases
0.1.3 | Nov 14, 2022 |
---|---|
0.1.2 | Nov 14, 2022 |
0.1.1 | Oct 26, 2022 |
0.1.0 | Oct 21, 2022 |
#1333 in Parser implementations
39KB
705 lines
reaclib-rs
A parsing library for the reaclib data format.
The data is represented by Set
, and the parsing is mostly done by Iter
.
The data can be collected into a type that implements FromIterator
, such as Vec
.
A convenience function to_hash_map
is provided for the case that you want a Vec
of all
Set
s for each reaction.
Format
The format is documented on the reaclib format help page.
There are two formats, both supported by this library.
Format
is used to indicate which version to expect.
Examples
use reaclib::{Format, Iter, Set};
use std::{fs::File, io::BufReader};
let file = File::open("reaclib")?;
let file = BufReader::new(file);
let iter = Iter::new(file, Format::Reaclib1);
let data: Vec<Set> = iter.collect::<Result<_, _>>()?;
use reaclib::{Format, Reaction, Set, to_hash_map};
use std::{collections::HashMap, io::stdin};
let input = stdin().lock();
let data: HashMap<Reaction, Vec<Set>> = to_hash_map(input, Format::Reaclib2)?;
Features
serde
: ProvideSerialize
andDeserialize
implementations for serde.arbitrary
: ProvideArbitrary
implementations for arbitrary, useful for fuzzing.
License
Licensed under either of
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0.3–0.9MB
~20K SLoC