]>
git.proxmox.com Git - rustc.git/blob - vendor/snap/src/varint.rs
1 /// https://developers.google.com/protocol-buffers/docs/encoding#varints
2 pub fn write_varu64(data
: &mut [u8], mut n
: u64) -> usize {
4 while n
>= 0b1000_0000 {
5 data
[i
] = (n
as u8) | 0b1000_0000;
13 /// https://developers.google.com/protocol-buffers/docs/encoding#varints
14 pub fn read_varu64(data
: &[u8]) -> (u64, usize) {
16 let mut shift
: u32 = 0;
17 for (i
, &b
) in data
.iter().enumerate() {
19 return match (b
as u64).checked_shl(shift
) {
21 Some(b
) => (n
| b
, i
+ 1),
24 match ((b
as u64) & 0b0111_1111).checked_shl(shift
) {
25 None
=> return (0, 0),