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}