#quickcheck #derive #field #gen #macro #clone #enums

derive-quickcheck-arbitrary

derive quickcheck::Arbitrary

4个版本

0.1.3 2023年9月13日
0.1.2 2023年8月25日
0.1.1 2023年7月31日
0.1.0 2023年7月31日

1862进程宏

Download history · Rust 包仓库 426/week @ 2024-03-14 · Rust 包仓库 489/week @ 2024-03-21 · Rust 包仓库 181/week @ 2024-03-28 · Rust 包仓库 461/week @ 2024-04-04 · Rust 包仓库 652/week @ 2024-04-11 · Rust 包仓库 528/week @ 2024-04-18 · Rust 包仓库 195/week @ 2024-04-25 · Rust 包仓库 268/week @ 2024-05-02 · Rust 包仓库 311/week @ 2024-05-09 · Rust 包仓库 238/week @ 2024-05-16 · Rust 包仓库 190/week @ 2024-05-23 · Rust 包仓库 238/week @ 2024-05-30 · Rust 包仓库 306/week @ 2024-06-06 · Rust 包仓库 257/week @ 2024-06-13 · Rust 包仓库 309/week @ 2024-06-20 · Rust 包仓库 224/week @ 2024-06-27 · Rust 包仓库

每月 1,186 次下载
用于 3 个crate

MIT 许可证

17KB
359

quickcheck::Arbitrary 提供宏。

扩展为在结构的每个字段上调用 Arbitrary::arbitrary

use derive_quickcheck_arbitrary::Arbitrary;

#[derive(Clone, Arbitrary)]
struct Yakshaver {
    id: usize,
    name: String,
}

您可以通过以下方式自定义字段生成:

#[derive(Clone, Arbitrary)]
struct Yakshaver {
    /// Must be less than 10_000
    #[arbitrary(gen(|g| num::clamp(usize::arbitrary(g), 0, 10_000) ))]
    id: usize,
    name: String,
    #[arbitrary(default)]
    always_false: bool,
}

您可以跳过枚举变体

#[derive(Clone, Arbitrary)]
enum YakType {
    Domestic {
        name: String,
    },
    Wild,
    #[arbitrary(skip)]
    Alien,
}

您可以添加泛型结构的边界

#[derive(Clone, Arbitrary)]
#[arbitrary(where(T: Arbitrary))]
struct GenericYak<T> {
    name: T,
}

依赖项

~0.4–0.8MB
~19K SLoC