log_macro crates.io

Macro to print variable(s) with values nicely (stripped from release builds)

Install

cargo add log_macro

Use

Add this to top of file:

```rust

[macro_use]

extern crate log_macro; ```

Possible uses and outputs:

```rust // print string only log!("hello"); // -> hello

// print variable let animals = vec!["cat", "dog"]; log!(animals); // -> animals: ["cat", "dog"]

// print multiple variables let animals = vec!["cat", "dog"]; let fish = vec!["salmon", "tuna"]; log!(animals, fish); // each variable logged on new line // -> animals: ["cat", "dog"] // -> fish: ["salmon", "tuna"] ```

Variables will be in green color to stand out.

Implementation

Exported macro code is this:

```rust

[macro_export]

macrorules! log { // Single literal string case ( $val:expr $(,)? ) => {{ #[cfg(debugassertions)] { if ::std::stringify!($val).startswith("\"") { // Remove quotes for string literals ::std::eprintln!("{}", ::std::stringify!($val).trimmatches('\"')); } else { // Print using a reference to avoid moving the value ::std::eprintln!("\x1B[32m{}\x1B[0m: {:?}", ::std::stringify!($val), &$val); } } }};

// Multiple variables case
( $($val:expr),+ $(,)? ) => {{
    #[cfg(debug_assertions)]
    {
        $(
            $crate::log!($val);
        )+
    }
}};

} ```

Run

Will run the tests in src/lib.rs.

cargo watch -q -- sh -c "tput reset && cargo test -q --lib"

Contribute

The tasks to do are outlined in existing issues and in tasks below (sorted by priority).

If issue/idea you have is not there, open new issue or start discussion.

Any PR with code/doc improvements is welcome. ✨

Join Discord for more indepth discussions on this repo and others.

Tasks

♥️

Support on GitHub or look into other projects.

MIT Twitter