Skip to main content

fkr/
lib.rs

1use fake::Fake;
2use strum::EnumIter;
3use strum::IntoEnumIterator;
4
5/// Available fake data types for generation.
6#[derive(Clone, Copy, Debug, strum::Display, EnumIter)]
7pub enum FkrOption {
8    Uuidv4,
9    Uuidv7,
10    Email,
11    UserAgent,
12    IPv4,
13    IPv6,
14    MACAddress,
15}
16
17impl FkrOption {
18    /// Generates a fake string value.
19    pub fn gen_string(&self) -> String {
20        match self {
21            Self::Uuidv4 => fake::uuid::UUIDv4.fake::<String>(),
22            Self::Uuidv7 => fake::uuid::UUIDv7.fake::<String>(),
23            Self::Email => fake::faker::internet::en::SafeEmail().fake::<String>(),
24            Self::UserAgent => fake::faker::internet::en::UserAgent().fake::<String>(),
25            Self::MACAddress => fake::faker::internet::en::MACAddress().fake::<String>(),
26            Self::IPv4 => fake::faker::internet::en::IPv4().fake::<String>(),
27            Self::IPv6 => fake::faker::internet::en::IPv6().fake::<String>(),
28        }
29    }
30
31    /// Returns all available variants.
32    pub fn to_vec() -> Vec<Self> {
33        Self::iter().collect()
34    }
35}