1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use map::TreapMap;
pub struct TreapSet<T> {
map: TreapMap<T, ()>,
}
impl<T: Ord> TreapSet<T> {
pub fn new() -> TreapSet<T> {
TreapSet {
map: TreapMap::new(),
}
}
pub fn len(&self) -> usize { self.map.len() }
pub fn clean(&mut self) { self.map.clear() }
pub fn is_empty(&self) -> bool { self.map.is_empty() }
pub fn contains(&self, item: &T) -> bool {
self.map.get(item).is_some()
}
pub fn insert(&mut self, item: T) -> bool {
self.map.insert(item, ()).is_none()
}
pub fn remove(&mut self, item: &T) -> bool {
self.map.remove(item).is_some()
}
}