in src/kvp.rs [372:409]
fn encode_kvp_item(key: &str, value: &str) -> Vec<Vec<u8>> {
let key_buf = key
.as_bytes()
.iter()
.take(HV_KVP_EXCHANGE_MAX_KEY_SIZE)
.chain(
vec![0_u8; HV_KVP_EXCHANGE_MAX_KEY_SIZE.saturating_sub(key.len())]
.iter(),
)
.copied()
.collect::<Vec<_>>();
debug_assert!(key_buf.len() == HV_KVP_EXCHANGE_MAX_KEY_SIZE);
let kvp_slices = value
.as_bytes()
.chunks(HV_KVP_AZURE_MAX_VALUE_SIZE)
.map(|chunk| {
let mut buffer = Vec::with_capacity(
HV_KVP_EXCHANGE_MAX_KEY_SIZE + HV_KVP_EXCHANGE_MAX_VALUE_SIZE,
);
buffer.extend_from_slice(&key_buf);
buffer.extend_from_slice(chunk);
while buffer.len()
< HV_KVP_EXCHANGE_MAX_KEY_SIZE + HV_KVP_EXCHANGE_MAX_VALUE_SIZE
{
buffer.push(0);
}
buffer
})
.collect::<Vec<Vec<u8>>>();
debug_assert!(kvp_slices.iter().all(|kvp| kvp.len()
== HV_KVP_EXCHANGE_MAX_KEY_SIZE + HV_KVP_EXCHANGE_MAX_VALUE_SIZE));
kvp_slices
}