Skip to main content

vcard/tree/value/
client_pid_map.rs

1//! # CLIENTPIDMAP value codec (RFC 6350 6.7.7)
2//!
3//! [`VcardCodec`] for the client-PID map: a source id and its URI.
4
5use alloc::vec;
6
7use crate::{
8    tree::{
9        codec::{VcardCodec, encode::encode_component, mode::VcardEscaper},
10        value::node::VcardValueNode,
11    },
12    value::client_pid_map::VcardClientPidMap,
13};
14
15impl<'v> VcardCodec<'v> for VcardClientPidMap<'v> {
16    fn decode(node: &'v VcardValueNode<'_>) -> Self {
17        VcardClientPidMap {
18            id: node.decode_scalar_at(0),
19            uri: node.decode_scalar_at(1),
20        }
21    }
22
23    fn encode(&self, escaper: VcardEscaper) -> VcardValueNode<'static> {
24        VcardValueNode::from_components(
25            vec![
26                encode_component(&[self.id.as_ref()], escaper),
27                encode_component(&[self.uri.as_ref()], escaper),
28            ],
29            escaper,
30        )
31    }
32}