cargo-expand

Build Status Latest Version

This is a wrapper around cargo rustc -- --pretty=expanded. Once installed, the command cargo expand prints out the result of macro expansion and #[derive] expansion applied to the current crate.

Installation

Install with cargo install cargo-expand.

This command optionally uses rustfmt to format the expanded output. If rustfmt is not available, the expanded code is not formatted. Install rustfmt with cargo install rustfmt. (Note: rustfmt is temporarily disabled due to rust-lang/rust#38016.)

Example

$ cat src/main.rs

rust fn main() { println!("Hello, world!"); }

$ cargo expand

```rust

![feature(prelude_import)]

![no_std]

[prelude_import]

use std::prelude::v1::*;

[macro_use]

extern crate std as std; fn main() { ::std::io::print(::std::fmt::Arguments::newv1({ static _STATICFMTSTR: &'static [&'static str] = &["Hello, world!\n"]; _STATICFMTSTR }, &match () { () => [], })); } ```

To expand a particular test target:

$ cargo expand --test test_something

To expand with rustfmt different from the one in $PATH:

$ RUSTFMT=/path/to/rustfmt cargo expand

To expand without rustfmt even though it is available in $PATH:

$ RUSTFMT= cargo expand

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in cargo-expand by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.