#faker #data #generator #random

fake

An easy to use library for generating fake data like name, number, address, lorem, dates, etc

16 releases (stable)

2.2.3 Jul 18, 2020
2.2.2 Mar 29, 2020
2.2.0 Jul 16, 2019
1.3.0 Apr 29, 2019
0.4.0 Jul 18, 2016

#7 in Algorithms

Download history 1226/week @ 2020-04-14 745/week @ 2020-04-21 443/week @ 2020-04-28 301/week @ 2020-05-05 436/week @ 2020-05-12 640/week @ 2020-05-19 540/week @ 2020-05-26 964/week @ 2020-06-02 854/week @ 2020-06-09 1008/week @ 2020-06-16 743/week @ 2020-06-23 663/week @ 2020-06-30 501/week @ 2020-07-07 716/week @ 2020-07-14 898/week @ 2020-07-21 817/week @ 2020-07-28

2,808 downloads per month
Used in 17 crates (15 directly)

MIT/Apache

150KB
2.5K SLoC

Fake

Build Status Latest Version

A Rust library for generating fake data.

Installation

Default:

[dependencies]
fake = "2.2"

If you want to use #[derive(Dummy)]:

fake = { version = "2.2", features=['derive']}

If you want the date and time features from chrono:

fake = { version = "2.2", features=['chrono']}

If you want http faker features:

fake = { version = "2.2", features=['http']}

Usage

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,
}

fn main() {
    // type derived Dummy
    let f: Foo = Faker.fake();
    println!("{:?}", f);

    // 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);
    }
}

Fakers with locale

Lorem

Word();
Words(count: Range<usize>);
Sentence(count: Range<usize>);
Sentences(count: Range<usize>);
Paragraph(count: Range<usize>);
Paragraphs(count: Range<usize>);

Name

FirstName();
LastName();
Title();
Suffix();
Name();
NameWithTitle();

Number

Digit();
NumberWithFormat(fmt: &'static str);

Boolean

Boolean(ratio: u8);

Internet

FreeEmailProvider();
DomainSuffix();
FreeEmail();
SafeEmail();
Username();
Password(len_range: Range<usize>);
IPv4();
IPv6();
IP();
Color();
UserAgent();

HTTP

RfcStatusCode();
ValidStatusCode();

Company

CompanySuffix();
CompanyName();
Buzzword();
BuzzwordMiddle();
BuzzwordTail();
CatchPhase();
BsVerb();
BsAdj();
BsNoun();
Bs();
Profession();
Industry();

Address

CityPrefix();
CitySuffix();
CityName();
CountryName();
CountryCode();
StreetSuffix();
StreetName();
TimeZone();
StateName();
StateAbbr();
SecondaryAddressType();
SecondaryAddress();
ZipCode();
PostCode();
BuildingNumber();
Latitude();
Longitude();

Phone Number

PhoneNumber();
CellNumber();

Date/Time

Time();
Date();
DateTime();
Duration();
DateTimeBefore(dt: DateTime<Utc>);
DateTimeAfter(dt: DateTime<Utc>);
DateTimeBetween(start: DateTime<Utc>, end: DateTime<Utc>);

Filesystem

FilePath();
FileName();
FileExtension();
DirPath();

LICENSE

This project is licensed under either of

at your option.

Dependencies

~275–800KB
~14K SLoC