2个版本
0.1.1 | 2019年4月8日 |
---|---|
0.1.0 | 2019年4月8日 |
#331 in #vec
16KB
260 行
weighted_random_list
一个Vec,允许你定义每个条目的权重并随机获取条目
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);
}
lib.rs
:
WeightedRandomList
允许你在你的集合中随机选择元素
示例选择镜像
在这个例子中,我们希望给“mirror-fast”系统更多的流量/权重,给慢速镜像较少的权重,给主存库最少的权重
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);
}
依赖
~570–800KB
~11K SLoC