Crate inline_tweak

source ·
Expand description

Tweak any literal directly from your code, changes to the source appear while running the program. It works by parsing the file when a change occurs.

The library is minimal, only requiring the lazy_static dependency to hold modified values. In release mode, the tweaking code is disabled and compiled away.

The derive feature exposes a proc macro to turn all literals from a function body into tweakable values.

§Usage

loop {
    // Try changing the value while the application is running
    println!("{}", inline_tweak::tweak!(3.14));
}

§Extra features

§derive

The derive feature allows to tweak any number/bool/char literal in a function. It avoids cluttering the code with inline_tweak::tweak! calls.

#[inline_tweak::tweak_fn]
fn main() {
    loop {
       let v = 1.0; // Try changing this value!
       println!("{}", v);
       std::thread::sleep(std::time::Duration::from_millis(200)); // or even this value :)
    }
}
§watch!

inline_tweak provides a watch!() macro that sleeps until the file is modified, akin to a breakpoint:

loop {
    println!("{}", inline_tweak::tweak!(3.14));
    watch!(); // The thread will sleep here until anything in the file changes
}
§Expressions

inline_tweak allows to tweak expressions by providing a value later. For example:

tweak!(rng.gen_range(0.0, 1.0))

can then be replaced by a constant value by modifying the file (even while the application is running) to

tweak!(5.0; rng.gen_range(0.0, 1.0)) // will always return 5.0
§release_tweak!

The release_tweak! macro acts exactly like tweak! except that it also works in release mode. It is accessible behind the feature flag "release_tweak" which is not enabled by default.

Macros§

Traits§

Functions§