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