5 个版本
0.1.5 | 2024 年 8 月 5 日 |
---|---|
0.1.4 | 2024 年 7 月 31 日 |
0.1.3 | 2024 年 7 月 21 日 |
0.1.2 | 2024 年 7 月 21 日 |
0.1.0 | 2024 年 7 月 21 日 |
在 Rust 模式 中排名 714
每月下载量 579
12KB
161 行
stub! - 更好的 todo!
stub!()
可以被赋值给变量
let username = stub!(String);
这允许你仅指定变量的类型并继续其他代码的工作,然后稍后回来指定其值。
示例
fn assign() {
// you can assign stub!() to a variable
let username = stub!(String);
println!("Hello {username}")
}
fn return_position() -> String {
// you can use stub!() like todo!() in return position
stub!()
}
fn infer_type() {
// you can let the compiler automatically infer the type
let status = stub!();
if status { println!("Success") }
}
fn explicit_type() {
// you can specify the type explicitly
let status: bool = stub!();
if status { println!("Success") }
}
fn custom_message() {
// you can add a custom message
let status: bool = stub!("Send a request to GitHub");
if status { println!("Success") }
}
fn impl_example() -> impl Iterator<Item=u32> {
// you can use stub!() in return position even with `impl Trait` return type
// note: `impl Trait` must be written as `impl dyn Trait` due to `macro_rules!` limitation
stub!(impl dyn Iterator<Item=u32>)
}
fn explicit_type_with_message_example() -> u32 {
// you can add
stub!(u32, "Assigned to: {}", "John")
}
fn explicit_type_example() -> u32 {
stub!(u32)
}
fn implicit_type_with_message_example() -> u32 {
stub!("Assigned to: {}", "John")
}
fn implicit_type_example() -> u32 {
stub!()
}
行为
当调用 stub 时,它将像 todo!()
宏一样 panic。然而,与 todo!()
宏不同,它不会使你的代码的后续部分变得不可达。
如果提供了自定义消息,它将被包含在 panic 消息中。
注意
stub!()
宏旨在开发期间使用,应该在生产使用之前替换为实际实现。- 当在返回位置使用
impl Trait
时,由于macro_rules!
的限制,必须在宏调用中使用impl dyn Trait
。
安装
cargo add stub-macro
感谢
喜欢这个项目? ⭐ 在 GitHub 上 star 这个仓库!
许可证
Apache 许可证 2.0 或 MIT 许可证,任选其一。
除非你明确表示,否则你提交给此软件包的任何有意贡献,根据 Apache-2.0 许可证定义,应以上述双重许可,不附加任何额外条款或条件。