This PR is an attempt at moving most of the logic to a separate lib crate. Using a lib crate will allow us to use doc tests and expose some of our backend logic for other projects to use.
It would probably be a good idea to re-think some of the APIs that we want to expose if the goal is to make this into a library that others can rely on. There's lots of potentially useful logic in main.rs (which is part of the bin crate rather than the lib crate).
This PR is an attempt at moving most of the logic to a separate lib crate. Using a lib crate will allow us to use doc tests and expose some of our backend logic for other projects to use.
It would probably be a good idea to re-think some of the APIs that we want to expose if the goal is to make this into a library that others can rely on. There's lots of potentially useful logic in
main.rs
(which is part of the bin crate rather than the lib crate).