# cargo-nightly
[](https://crates.io/crates/cargo-nightly)
[](https://docs.rs/cargo-nightly)
[](https://github.com/dataroadinc/cargo-nightly/actions)
[](https://creativecommons.org/licenses/by-sa/4.0/)
[](https://crates.io/crates/cargo-nightly)
Cargo subcommand that forwards commands to the nightly toolchain, enabling
nightly toolchain usage in cargo aliases.
## Why it exists
Cargo aliases in `.cargo/config.toml` cannot directly use `+nightly` syntax
because cargo aliases can only invoke cargo subcommands, not external
commands or toolchain selectors. This plugin provides a `cargo-nightly`
subcommand that forwards all arguments to `cargo +nightly <args>`, making
it possible to use nightly toolchain commands through cargo aliases.
### The Problem
If you try to use `+nightly` directly in a cargo alias:
```toml
[alias]
clippy2 = "+nightly clippy" # ❌ This doesn't work
```
You'll get an error:
```text
error: no such command: `+nightly`
help: invoke `cargo` through `rustup` to handle `+toolchain` directives
```
### The Solution
With `cargo-nightly` installed, you can create aliases like:
```toml
[alias]
clippy2 = "nightly clippy"
check2 = "nightly clippy"
clippy-all = "nightly clippy --workspace --all-targets --all-features -- -D warnings"
```
When you run `cargo clippy2`, cargo will:
1. Look for a `cargo-nightly` subcommand
2. `cargo-nightly` forwards to `cargo +nightly clippy`
3. The nightly toolchain runs your command
## Installation
### Using cargo-binstall (Recommended)
First install cargo-binstall if you haven't already:
```bash
cargo install cargo-binstall
```
Then install cargo-nightly:
```bash
cargo binstall cargo-nightly
```
### Using cargo install
```bash
cargo install cargo-nightly
```
## Usage
Once installed, you can use it directly:
```bash
cargo nightly clippy
cargo nightly check
cargo nightly build
```
Or through aliases in `.cargo/config.toml`:
```toml
[alias]
# Use nightly clippy for comprehensive linting
clippy2 = "nightly clippy"
check2 = "nightly clippy"
# Comprehensive clippy checks
clippy-all = "nightly clippy --workspace --all-targets --all-features -- -D warnings"
clippy-fix = "nightly clippy --fix --workspace --all-targets --all-features --allow-dirty --allow-staged"
clippy-strict = "nightly clippy --workspace --all-targets --all-features -- -D warnings -D clippy::pedantic"
# Quick fixes
fixlib = "nightly clippy --fix --lib --allow-dirty"
```
Then use the aliases:
```bash
cargo clippy2
cargo check2
cargo clippy-all
```
## How it works
The `cargo-nightly` command is a simple wrapper that:
1. Takes all arguments after `nightly`
2. Executes `cargo +nightly <args>`
3. Forwards stdin, stdout, and stderr
4. Exits with the same exit code
This allows cargo to recognize `nightly` as a subcommand, which can then be
used in aliases.
## License
Creative Commons Attribution-ShareAlike 4.0 International License - see
[LICENSE](LICENSE) file for details.