quo-rust 0.1.8

Companion package for the Quo debugger.
Documentation

Quo Preview

Build status docs.rs GPL-3.0 license

Quo is a cross-platform variable dumper designed to make debugging easier. It receives data from your application and displays it in a clean desktop interface, allowing you to inspect complex values in real-time without cluttering your terminal or browser console.

Note: This package requires the Quo desktop client to be running to display the debug data.

Noteworthy features

  • Debug-only: The macro only executes in debug mode (#[cfg(debug_assertions)]). In release builds, it compiles to nothing, ensuring zero overhead.
  • Multiple arguments: Inspect multiple variables or expressions in a single call.
  • Rich Metadata: Capture stack traces, system metrics, memory addresses, and more.

Installation

Add quo to your Cargo.toml under dependencies:

[dependencies]

quo = { version = "0.1.8", package = "quo-rust" }

To enable additional data capture, use feature flags:

[dependencies]

# Enable specific features

quo = { version = "0.1.8", package = "quo-rust", features = ["stack-trace", "system-info", "hashing"] }



# Or enable everything

quo = { version = "0.1.8", package = "quo-rust", features = ["full"] }

Available Features

  • stack-trace: Captures the call stack and the caller function name.
  • system-info: Captures current CPU and memory usage of the process.
  • hashing: Generates a reproducible grouping hash for variables (var_type:name:origin), allowing the Quo client to group and diff values over time.
  • full: Enables all the above features.

Basic info like Thread ID/Name, Runtime Environment (OS/Arch), and Memory Address are included by default.

Usage

Import the macro and pass variables to inspect:

use quo::quo;

#[derive(Debug)]
struct User {
    id: u32,
    username: String,
}

fn main() {
    let user_id = 42;
    let user = User { id: 1, username: "jdoe".to_string() };

    // Dump a single variable
    quo!(user_id);

    // Dump multiple variables at once
    quo!(user_id, user);
    
    // Some quick maths
    quo!(42 * 42);
}

Configuration

You can customize the Quo server address using environment variables at compile time:

  • QUO_HOST: The host where Quo is running (default: http://127.0.0.1, Quo always listens on 127.0.0.1 so changing this has no use).
  • QUO_PORT: The port Quo is listening on (default: 7312)

The correct port can be found in the bottom left in the Quo client.

Note: The Quo client always uses 127.0.0.1 as host, it is not recommended to have it set to any other host.

You can set these in your Cargo.toml as follows

[env]

QUO_HOST = "http://127.0.0.1"

QUO_PORT = "7312"


License

Quo is open-source software licensed under the GPL-3 license.