(values: &[i64])
| 73 | } |
| 74 | |
| 75 | pub(crate) fn encode_delta_varints(values: &[i64]) -> Vec<u8> { |
| 76 | if values.is_empty() { |
| 77 | return Vec::new(); |
| 78 | } |
| 79 | |
| 80 | let mut encoded = Vec::new(); |
| 81 | let mut previous = 0_i64; |
| 82 | for (idx, value) in values.iter().copied().enumerate() { |
| 83 | let delta = if idx == 0 { value } else { value - previous }; |
| 84 | previous = value; |
| 85 | encode_varint(delta, &mut encoded); |
| 86 | } |
| 87 | encoded |
| 88 | } |
| 89 | |
| 90 | fn encode_varint(value: i64, out: &mut Vec<u8>) { |
| 91 | let mut remaining = ((value << 1) ^ (value >> 63)) as u64; |
no test coverage detected