Internals
Logos' core functionalities are split across five crates:
logosis the main crate, that you add to your project (inCargo.toml) to obtain theLogosderive macro. The public API is limited to this crate, and most users should only use this crate, not the others.logos-deriveis a very simple but necessary crate to exposelogos-codegen's code as a derive macro.logos-codegencontains the most technical parts of Logos: the code that reads your token definitions, and generates optimized code to create blazingly fast lexers. You can read a blog post from the author of Logos to get a small insight of what thelogos-codegencrate does. In the future, we hope to provide more documents about how this crate works, so people are more likely to understand it and improve it with pull requests (see the Contributing section).logos-cliis a separate crate, that installs a binary of the same name, and allows to expand theLogosderive macro into code. It can be installed withcargo install logos-cli, and usage help can be obtained through thelogos-cli --helpcommand. This tool can be useful if your token definitions stay constant, and you want to reduce compilation time overhead caused by derive macros.logos-fuzzis an internal crate (i.e., unpublished) that uses afl.rs to find confusing panics before they reach the developer. To use this tool, see the Fuzzing guide