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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! Protobuf wire format serialization utilities
//!
//! This module provides low-level functions for encoding Protobuf wire format.
//! Reused from cap-gl-consumer-rust/src/writer/protobuf_serialization.rs
use crateZerobusError;
/// Encode a Protobuf field tag
///
/// Tag format: (field_number << 3) | wire_type
///
/// # Arguments
///
/// * `buffer` - Buffer to write tag to
/// * `field_number` - Protobuf field number
/// * `wire_type` - Protobuf wire type (0=Varint, 1=Fixed64, 2=Length-delimited, 5=Fixed32)
pub
/// Encode varint (variable-length integer)
///
/// Protobuf uses varint encoding for integers and tags.
/// Each byte has 7 bits of data and 1 continuation bit.
///
/// # Arguments
///
/// * `buffer` - Buffer to write varint to
/// * `value` - Value to encode as varint
pub
/// Encode signed integer using zigzag encoding
///
/// Zigzag encoding converts signed integers to unsigned integers for efficient encoding.
/// Formula: (n << 1) ^ (n >> 31) for 32-bit, (n << 1) ^ (n >> 63) for 64-bit
///
/// # Arguments
///
/// * `buffer` - Buffer to write encoded value to
/// * `value` - Signed integer value to encode
pub
/// Encode signed 64-bit integer using zigzag encoding
///
/// Zigzag encoding converts signed integers to unsigned integers for efficient encoding.
/// Formula: (n << 1) ^ (n >> 63)
///
/// # Arguments
///
/// * `buffer` - Buffer to write encoded value to
/// * `value` - Signed 64-bit integer value to encode
pub