use fake::rand::rngs::StdRng;
use fake::rand::SeedableRng;
use fake::{Dummy, Fake, Faker};
#[derive(Debug, Dummy)]
pub struct Foo {
#[dummy(faker = "1000..2000")]
pub order_id: usize,
pub customer: String,
pub paid: bool,
}
fn main() {
let f: Foo = Faker.fake();
println!("{f:?}");
let tuple = Faker.fake::<(u8, u32, f32)>();
println!("tuple {tuple:?}");
println!("String {:?}", Faker.fake::<String>());
println!("String {:?}", (8..20).fake::<String>());
println!("u32 {:?}", (8..20).fake::<u32>());
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:?}");
let name: String = Name(ZH_CN).fake();
println!("name {name:?}");
use fake::faker::lorem::en::*;
let words: Vec<String> = Words(3..5).fake();
println!("words {words:?}");
let name_vec = fake::vec![String as Name(EN); 4, 3..5, 2];
println!("random nested vec {name_vec:?}");
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 r = &mut StdRng::from_seed(seed);
for _ in 0..5 {
let v: usize = Faker.fake_with_rng(r);
println!("value from fixed seed {v}");
}
}