#stub #testing #development #utilities #no-alloc

no-std stub-macro

stub!() 是 todo!() 的更好版本,可以被赋值给变量

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

Download history 196/week @ 2024-07-15 105/week @ 2024-07-22 149/week @ 2024-07-29 129/week @ 2024-08-05

每月下载量 579

Apache-2.0 OR MIT

12KB
161

stub! - 更好的 todo!

Build Documentation

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.0MIT 许可证,任选其一。

除非你明确表示,否则你提交给此软件包的任何有意贡献,根据 Apache-2.0 许可证定义,应以上述双重许可,不附加任何额外条款或条件。

无运行时依赖