Skip to main content

advanced_features/
advanced_features.rs

1//! Advanced Features Example
2//! Demonstrates seeded generation and other advanced features
3
4use faker_rust::{
5    address, company, internet, name, Faker,
6};
7
8fn main() {
9    println!("=== Faker-Rust Advanced Features Examples ===\n");
10
11    // Demonstrate deterministic generation with seed
12    println!("🎲 DETERMINISTIC GENERATION (Seeded):");
13    println!("Setting seed to 12345...\n");
14    
15    Faker::set_seed(12345);
16    let name1 = name::name();
17    let email1 = internet::email(None, None, None);
18    let city1 = address::city();
19    
20    println!("First run:");
21    println!("  Name:   {}", name1);
22    println!("  Email:  {}", email1);
23    println!("  City:   {}", city1);
24    println!();
25
26    // Reset with same seed - should produce same results
27    Faker::set_seed(12345);
28    let name2 = name::name();
29    let email2 = internet::email(None, None, None);
30    let city2 = address::city();
31    
32    println!("Second run (same seed):");
33    println!("  Name:   {}", name2);
34    println!("  Email:  {}", email2);
35    println!("  City:   {}", city2);
36    println!();
37
38    // Verify they're the same
39    if name1 == name2 && email1 == email2 && city1 == city2 {
40        println!("✅ SUCCESS: Same seed produces identical results!");
41    } else {
42        println!("❌ ERROR: Results differ despite same seed");
43    }
44    println!();
45
46    // Different seed produces different results
47    println!("Different seed (54321):");
48    Faker::set_seed(54321);
49    println!("  Name:   {}", name::name());
50    println!("  Email:  {}", internet::email(None, None, None));
51    println!("  City:   {}", address::city());
52    println!();
53
54    // Batch generation
55    println!("📊 BATCH GENERATION:");
56    println!("Generating 5 random companies:");
57    for i in 1..=5 {
58        println!("  {}. {} - {}", i, company::name(), company::catch_phrase());
59    }
60    println!();
61
62    // Generate fake user profiles
63    println!("👤 FAKE USER PROFILES:");
64    for i in 1..=3 {
65        println!("User {}:", i);
66        println!("  Name:     {}", name::name());
67        println!("  Email:    {}", internet::email(None, None, None));
68        println!("  Username: {}", internet::username(None));
69        println!("  Address:  {}", address::street_address());
70        println!("  Company:  {}", company::name());
71        println!();
72    }
73}