Skip to main content

lb_rs/
experiments.rs

1use std::hash::{DefaultHasher, Hash, Hasher};
2use strum::VariantArray;
3use strum_macros::VariantArray;
4
5#[derive(VariantArray, Clone, Copy)]
6pub enum WelcomeDoc {
7    NoWelcomeDoc,
8    OldWelcomeDoc,
9    HypeWelcomeDoc,
10    FramgentedArchetypes,
11}
12
13pub fn cohort<E: VariantArray + Copy>(username: &str) -> E {
14    let mut hasher = DefaultHasher::new();
15    username.hash(&mut hasher);
16    let hash = hasher.finish();
17
18    let variant_id = (hash % E::VARIANTS.len() as u64) as usize;
19
20    E::VARIANTS[variant_id]
21}