18个稳定版本

1.1.1 2024年2月4日
1.1.0 2024年1月30日
1.0.10 2023年12月23日
1.0.9 2023年4月17日
1.0.2 2020年8月30日

#21配置 类别中

Download history 446/week @ 2024-03-11 469/week @ 2024-03-18 251/week @ 2024-03-25 328/week @ 2024-04-01 280/week @ 2024-04-08 319/week @ 2024-04-15 332/week @ 2024-04-22 350/week @ 2024-04-29 291/week @ 2024-05-06 308/week @ 2024-05-13 378/week @ 2024-05-20 293/week @ 2024-05-27 217/week @ 2024-06-03 234/week @ 2024-06-10 278/week @ 2024-06-17 260/week @ 2024-06-24

1,020 每月下载量
5 个Crates中 使用 (直接使用2个)

CC0 许可证

30KB
559

inline_tweak

Crates.io

inline_tweak 基于 这篇tuxedo labs的博客文章

直接从您的代码中调整任何文字,程序运行时修改源代码会显示出来。
它通过在文件更改时解析文件来工作。

该库非常小巧,仅需要 lazy_static 依赖来保存修改后的值。
在发布模式下,调整代码被禁用并编译掉。

derive 功能暴露了一个过程宏,可以将函数体中的所有文字转换为可调整的值。

用法

use inline_tweak::*;

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

额外功能

derive

derive 功能允许调整函数中的任何数字/布尔/字符文字。它避免了在代码中添加 inline_tweak::tweak! 调用,使代码更简洁。

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

注意,它需要 syn/quote/proc_macro2 依赖,这使得crate编译速度较慢。
tweak! 不同,它不允许在宏调用(如 println!)中调整文字,因为它无法可靠地通过函数调用替换文字,因为宏可以有自定义语法。

watch!

inline_tweak 提供了一个 watch!() 宏,该宏会休眠直到文件被修改,类似于断点。

use inline_tweak::*;

fn main() {
    loop {
        println!("{}", tweak!("hello world"));
        watch!(); // The thread will sleep here until anything in the file changes
    }
}

表达式

inline_tweak 允许通过稍后提供值来调整表达式。例如

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

可以修改文件(甚至当应用程序正在运行时)来替换为常量值

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

查看“表达式”示例的实际操作

请注意,这仅适用于返回可调整类型的表达式。(数字/布尔文字)

release_tweak!

release_tweak! 宏的行为与 tweak! 完全相同,不同之处在于它也可以在发布模式下工作。
该功能可以通过功能标志 "release_tweak" 访问,默认情况下未启用。

安装

只需将此行添加到您的 Cargo.toml 文件中

inline_tweak = "1.0.10"

依赖项

~215KB