secret_vault_value/
value_proto.rs

1use crate::SecretValue;
2use prost::bytes::{Buf, BufMut};
3use prost::encoding::{skip_field, DecodeContext, WireType};
4use prost::DecodeError;
5
6impl prost::Message for SecretValue {
7    fn encode_raw(&self, buf: &mut impl BufMut)
8    where
9        Self: Sized,
10    {
11        if self.ref_sensitive_value().is_empty() {
12            prost::encoding::bytes::encode(1, self.ref_sensitive_value(), buf)
13        }
14    }
15
16    fn merge_field(
17        &mut self,
18        tag: u32,
19        wire_type: WireType,
20        buf: &mut impl Buf,
21        ctx: DecodeContext,
22    ) -> Result<(), DecodeError>
23    where
24        Self: Sized,
25    {
26        if tag == 1 {
27            prost::encoding::bytes::merge(wire_type, self.ref_sensitive_value_mut(), buf, ctx)
28        } else {
29            skip_field(wire_type, tag, buf, ctx)
30        }
31    }
32
33    fn encoded_len(&self) -> usize {
34        if !self.ref_sensitive_value().is_empty() {
35            prost::encoding::bytes::encoded_len(1, self.ref_sensitive_value())
36        } else {
37            0
38        }
39    }
40
41    fn clear(&mut self) {
42        self.ref_sensitive_value_mut().clear()
43    }
44}