A cargo subcommand that merges your crate source code into a single file.
The initial purpose of this command is to merge your whole crate as a single source file that can be used on competitive programming platforms.
It works by expanding module imports by detecting them with regex, rewriting some "use" statements in the process.
- merge the library crate of the package
- merge modules from the main binary crate of the package
- merge external crates
- path based crates (crates that are declared as dependencies like this :
my-crate = { path = "path/to/crate" }
)
- path based crates (crates that are declared as dependencies like this :
- silence the standard error output by cleansing source code from
eprint!
andeprintln!
macros
Working basic examples can be found in the integration tests data.
Just run the following command:
cargo install cargo-merge
Simply call the cargo sub command inside your crate folder hierarchy (it can be any folder below the one containing your Cargo.toml
file):
cargo merge
This will generate a merged file in target/merge/merged.rs
.
Long flag | Short flag | Description |
---|---|---|
-s |
--silence-standard-error-output |
Remove all the usages of eprint! and eprintln! macros from your code. |
This little project is heavily inspired by rust-sourcebundler. It has the same approach and has the same goal, but I find the cargo subcommand approach less intrusive. Also, I'll hopefully also maintain this project actively.