37 lines
965 B
Rust
37 lines
965 B
Rust
#![cfg_attr(docsrs, doc(cfg(feature = "sval")))]
|
|
|
|
use crate::{IndexMap, IndexSet};
|
|
use sval::{Stream, Value};
|
|
|
|
impl<K: Value, V: Value, S> Value for IndexMap<K, V, S> {
|
|
fn stream<'sval, ST: Stream<'sval> + ?Sized>(&'sval self, stream: &mut ST) -> sval::Result {
|
|
stream.map_begin(Some(self.len()))?;
|
|
|
|
for (k, v) in self {
|
|
stream.map_key_begin()?;
|
|
stream.value(k)?;
|
|
stream.map_key_end()?;
|
|
|
|
stream.map_value_begin()?;
|
|
stream.value(v)?;
|
|
stream.map_value_end()?;
|
|
}
|
|
|
|
stream.map_end()
|
|
}
|
|
}
|
|
|
|
impl<K: Value, S> Value for IndexSet<K, S> {
|
|
fn stream<'sval, ST: Stream<'sval> + ?Sized>(&'sval self, stream: &mut ST) -> sval::Result {
|
|
stream.seq_begin(Some(self.len()))?;
|
|
|
|
for value in self {
|
|
stream.seq_value_begin()?;
|
|
stream.value(value)?;
|
|
stream.seq_value_end()?;
|
|
}
|
|
|
|
stream.seq_end()
|
|
}
|
|
}
|