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 with 0 dependencies. 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.