百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
A

arbitrary

> 编程语言
开源

从任意的非结构化输入生成结构化数据。

871 stars0 点赞1 次浏览
访问官网GitHub

工具介绍

从任意的非结构化输入生成结构化数据。

关于 Arbitrary 套件允许您构建任意类型的实例。 该套件主要用于与 libFuzzer 和 cargo-fuzz 或 AFL 等生成器结合使用,并帮助将它们生成的原始、未类型化的字节缓冲区转换为具有类型、有效且结构化的值。这使您能够将结构感知的测试用例生成与基于突变的覆盖率导向生成器相结合。

假设您正在编写一个颜色转换库,并且您有一个 Rgb 结构来表示 RGB 颜色。您可能希望为 Rgb 实现 Arbitrary,这样在测试函数中就可以使用任意的 Rgb 实例来断言某些属性(例如,断言 RGB 转换为 HSL,然后再转换回 RGB 总是始终保持原始状态)。

rust
// rgb.rs

use arbitrary::Arbitrary;

#[derive(Arbitrary)]
pub struct Rgb {
    pub r: u8,
    pub g: u8,
    pub b: u8,
}

自定义单个字段

如果您的结构使用未实现 Arbitrary 的类型,或者您希望针对特定字段进行更多自定义,这将特别方便。

…

手动实现 Arbitrary

或者,您可以手动编写 Arbitrary 实现:

rust
// rgb.rs
使用 arbitrary::{Arbitrary, Result, Unstructured};
#[derive(Copy, Clone, Debug)]
pub struct Rgb {
pub r: u8,
pub g: u8,
pub b: u8,
}

impl Arbitrary for Rgb {
fn arbitrary(u: &mut Unstructured) -> Result {
let r = u8::arbitrary(u)?;
let g = u8::arbitrary(u)?;
let b = u8::arbitrary(u)?;
Ok(Rgb {r, g, b})
}
}
`

[**Read the API documentation on `docs.rs`!**](https://docs.rs/arbitrary)
[dependencies]

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rust

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言