25 个稳定版本
2.9.2 | 2023 年 12 月 20 日 |
---|---|
2.9.1 | 2023 年 10 月 25 日 |
2.8.0 | 2023 年 8 月 21 日 |
2.6.1 | 2023 年 5 月 6 日 |
0.4.0 | 2016 年 7 月 18 日 |
#8 in 开发工具
219,194 每月下载量
用于 154 个包 (141 个直接使用)
345KB
8K SLoC
Fake
Rust 库,用于生成伪造数据。
安装
默认
[dependencies]
fake = { version = "2.9.2", features = ["derive"] }
可用功能
derive
:如果您想使用#[derive(Dummy)]
- 支持的包功能标志
chrono
chrono-tz
http
uuid
bigdecimal
(通过bigdecimal-rs
)rust_decimal
random_color
geo
semver
serde_json
time
zerocopy
glam
always-true-rng
:暴露 AlwaysTrueRngmaybe-non-empty-collections
:允许使用 AlwaysTrueRng 生成非空集合
使用方法
use fake::{Dummy, Fake, Faker};
use rand::rngs::StdRng;
use rand::SeedableRng;
#[derive(Debug, Dummy)]
pub struct Foo {
#[dummy(faker = "1000..2000")]
order_id: usize,
customer: String,
paid: bool,
}
#[derive(Debug, Dummy)]
struct Bar<T> {
field: Vec<T>,
}
fn main() {
// type derived Dummy
let f: Foo = Faker.fake();
println!("{:?}", f);
let b: Bar<Foo> = Faker.fake();
println!("{:?}", b);
// using `Faker` to generate default fake value of given type
let tuple = Faker.fake::<(u8, u32, f32)>();
println!("tuple {:?}", tuple);
println!("String {:?}", Faker.fake::<String>());
// types U can used to generate fake value T, if `T: Dummy<U>`
println!("String {:?}", (8..20).fake::<String>());
println!("u32 {:?}", (8..20).fake::<u32>());
// using `faker` module with locales
use fake::faker::name::raw::*;
use fake::locales::*;
let name: String = Name(EN).fake();
println!("name {:?}", name);
let name: String = Name(ZH_TW).fake();
println!("name {:?}", name);
// using convenient function without providing locale
use fake::faker::lorem::en::*;
let words: Vec<String> = Words(3..5).fake();
println!("words {:?}", words);
// using macro to generate nested collection
let name_vec = fake::vec![String as Name(EN); 4, 3..5, 2];
println!("random nested vec {:?}", name_vec);
// fixed seed rng
let seed = [
1, 0, 0, 0, 23, 0, 0, 0, 200, 1, 0, 0, 210, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,
];
let ref mut r = StdRng::from_seed(seed);
for _ in 0..5 {
let v: usize = Faker.fake_with_rng(r);
println!("value from fixed seed {}", v);
}
}
具有区域设置的伪造者
Lorem
Word();
Words(count: Range<usize>);
Sentence(count: Range<usize>);
Sentences(count: Range<usize>);
Paragraph(count: Range<usize>);
Paragraphs(count: Range<usize>);
姓名
FirstName();
LastName();
Title();
Suffix();
Name();
NameWithTitle();
数字
Digit();
NumberWithFormat<'a>(fmt: &'a str);
布尔值
Boolean(ratio: u8);
互联网
FreeEmailProvider();
DomainSuffix();
FreeEmail();
SafeEmail();
Username();
Password(len_range: Range<usize>);
IPv4();
IPv6();
IP();
MACAddress();
UserAgent();
HTTP
RfcStatusCode();
ValidStatusCode();
颜色
HexColor();
RgbColor();
RgbaColor();
HslColor();
HslaColor();
Color();
公司
CompanySuffix();
CompanyName();
Buzzword();
BuzzwordMiddle();
BuzzwordTail();
CatchPhase();
BsVerb();
BsAdj();
BsNoun();
Bs();
Profession();
Industry();
地址
CityPrefix();
CitySuffix();
CityName();
CountryName();
CountryCode();
StreetSuffix();
StreetName();
TimeZone();
StateName();
StateAbbr();
SecondaryAddressType();
SecondaryAddress();
ZipCode();
PostCode();
BuildingNumber();
Latitude();
Longitude();
Geohash(precision: u8);
汽车
LicencePlate();
条形码
Isbn();
Isbn13();
Isbn10();
电话号码
PhoneNumber();
CellNumber();
日期/时间
Time();
Date();
DateTime();
Duration();
DateTimeBefore(dt: DateTime<Utc>);
DateTimeAfter(dt: DateTime<Utc>);
DateTimeBetween(start: DateTime<Utc>, end: DateTime<Utc>);
文件系统
FilePath();
FileName();
FileExtension();
DirPath();
金融
Bic();
UUID
UUIDv1();
UUIDv3();
UUIDv4();
UUIDv5();
许可证
此项目受以下许可证之一许可:
- Apache 许可证 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择。
依赖项
~0.4–3MB
~58K SLoC