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    /// generated by username: `test0`
8    NoWelcomeDoc,
9
10    /// generated by username: `test1`
11    OldWelcomeDoc,
12
13    /// generated by username: `test5`
14    HypeWelcomeDoc,
15
16    /// generated by username: `test2`
17    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}