[−][src]Crate weighted_random_list
WeightedRandomList
enables you to to randomly select elements from
your collection while
Example select mirror
In this example we would like to give more traffic/weight to the the system "mirror-fast", less to the slow mirrors and the least to the main archive:
extern crate weighted_random_list; use weighted_random_list::WeightedRandomList; fn main() { let list = [ (1, "https://source.example.net/archive"), (10, "https://mirror-slow0.example.net/archive"), (10, "https://mirror-slow1.example.net/archive"), (100, "https://mirror-fast.example.net/archive"), ]; let mirrors = list.iter() .map(|(weight, url)| (*weight, url.to_string())) .collect::<WeightedRandomList<String>>(); let random_choice = mirrors.get_random(); println!("Using {:?} this time", random_choice); }
Structs
WeightedRandomList | Stores the data and keeps track of the chances. It is built so that you can add and remove elements withouth the need of recalculation. |
Enums
Entry | Update or insert one entry inside the the list. |