Crates.io | cargo-wizard |
lib.rs | cargo-wizard |
version | 0.2.2 |
source | src |
created_at | 2024-03-03 16:22:27.054253 |
updated_at | 2024-03-11 22:52:27.797298 |
description | Cargo subcommand for applying Cargo profile templates. |
homepage | |
repository | https://github.com/kobzol/cargo-wizard |
max_upload_size | |
id | 1160741 |
size | 116,123 |
Cargo subcommand that applies profile and config templates to your Cargo project to configure it for maximum performance, fast compile times or minimal binary size.
I often see Rust users asking online about how can they best configure Cargo get e.g. the fastest compilation times, best runtime performance or minimal binary size. While this information can be found in various books, repositories or blog posts, it is annoying to hunt for it everytime we want to configure a new Cargo project.
This tool tries to automate that process to make it easier.
$ cargo install cargo-wizard
$ cargo wizard
$ cargo wizard apply <template> <profile>
# For example, apply `fast-runtime` template to the `dist` profile
$ cargo wizard apply fast-runtime dist
You can enable additional configuration options that require a nightly compiler by running cargo-wizard
with a
nightly Cargo (e.g. cargo +nightly wizard
) or by using the --nightly
flag.
Note that you should be executing cargo wizard
inside a directory that is a part of a Cargo workspace. It will then
apply the configuration options to that workspace.
cargo-wizard
can create or modify Cargo profiles in your Cargo.toml
manifest and RUSTFLAGS in
the .cargo/config.toml
file) based on a
set of predefined templates:
fast-compile
- minimizes compilation times
fast-runtime
- maximizes runtime performance
min-size
- minimizes binary size
fast-runtime
, but uses optimization flags designed for small binary size.You can also modify these templates in the interactive mode to build your own custom template.
cargo-wizard
mostly serves to improve discoverability of possible Cargo profile and config options, to
help you find the ideal settings for your use-cases.cargo-wizard
currently only modifies Cargo.toml
and config.toml
. There are other things that can be configured
to achieve e.g. even smaller binaries, but these are out of scope for this tool, at least at the moment.cargo-wizard
currently ignores Cargo settings that are not relevant to performance.config.toml
) changes are applied to the global build.hostflags
setting, because per-profile
RUSTFLAGS are still unstable.Why
wizard
? The name is inspired by GUI wizards that guide you through some process using a series of dialogs.
Contributions are welcome :)
Possible future features:
toml_edit
: awesome crate that can modify TOML files while keeping
their original formatting.inquire
: pretty slick crate for building interactive TUI dialogs and
prompts.