1 个不稳定版本
0.1.0 | 2023年6月17日 |
---|
1887 在 进程宏
14KB
88 代码行
arg_ripper
是一个宏,允许轻松实现依赖注入,用于在函数内部模拟内部变量。它包含一个名为 rip 的宏,该宏接收一个局部绑定列表(let
语句)作为参数,并生成一个具有这些参数的新函数,而不是局部绑定。
示例
#[rip(inner: i32)]
fn my_func() -> i32 {
let inner = 42;
inner
}
fn main() {
assert_eq!(my_func(), 42);
assert_eq!(ripped_my_func(69), 69);
}
使这个功能对单元测试有用的关键特性是能够更改你正在撕裂的参数的类型。注意示例中第 1 行的类型提示,在这种情况下,它与原始版本的 inner
相同,但不必相同。唯一的限制是新代码仍然需要编译,这使得以下情况成为可能
#[rip(answer: &str)]
fn print_answer() {
let answer: i32 = 42;
println!("{answer}");
}
fn main() {
print_answer();
ripped_print_answer("Fourty Two");
}
依赖项
~270–720KB
~17K SLoC