redis_event/cmd/
hyperloglog.rs1use std::slice::Iter;
10
11#[derive(Debug)]
12pub struct PFADD<'a> {
13 pub key: &'a [u8],
14 pub elements: Vec<&'a [u8]>,
15}
16
17pub(crate) fn parse_pfadd(mut iter: Iter<Vec<u8>>) -> PFADD {
18 let key = iter.next().unwrap();
19 let mut elements = Vec::new();
20 while let Some(element) = iter.next() {
21 elements.push(element.as_slice());
22 }
23 PFADD { key, elements }
24}
25
26#[derive(Debug)]
27pub struct PFCOUNT<'a> {
28 pub keys: Vec<&'a [u8]>,
29}
30
31pub(crate) fn parse_pfcount(mut iter: Iter<Vec<u8>>) -> PFCOUNT {
32 let mut keys = Vec::new();
33 while let Some(key) = iter.next() {
34 keys.push(key.as_slice());
35 }
36 PFCOUNT { keys }
37}
38
39#[derive(Debug)]
40pub struct PFMERGE<'a> {
41 pub dest_key: &'a [u8],
42 pub source_keys: Vec<&'a [u8]>,
43}
44
45pub(crate) fn parse_pfmerge(mut iter: Iter<Vec<u8>>) -> PFMERGE {
46 let dest_key = iter.next().unwrap();
47 let mut source_keys = Vec::new();
48 while let Some(source) = iter.next() {
49 source_keys.push(source.as_slice());
50 }
51 PFMERGE { dest_key, source_keys }
52}