Skip to main content

vcard/tree/value/
unknown.rs

1//! # Unknown value codec
2//!
3//! [`VcardCodec`] for a value the model does not decode: its raw components are
4//! kept (unescaped on read, re-escaped on write) so anything round-trips.
5
6use crate::{
7    tree::{
8        codec::{VcardCodec, encode::encode_component, mode::VcardEscaper},
9        value::node::VcardValueNode,
10    },
11    value::VcardValueUnknown,
12};
13
14impl<'v> VcardCodec<'v> for VcardValueUnknown<'v> {
15    fn decode(node: &'v VcardValueNode<'_>) -> Self {
16        VcardValueUnknown {
17            components: (0..node.component_count())
18                .map(|i| node.decode_at(i))
19                .collect(),
20        }
21    }
22
23    fn encode(&self, escaper: VcardEscaper) -> VcardValueNode<'static> {
24        VcardValueNode::from_components(
25            self.components
26                .iter()
27                .map(|component| encode_component(component, escaper))
28                .collect(),
29            escaper,
30        )
31    }
32}