Format crates comparison

This document tracks feature parity across all facet format crates.

Legend:

  • โœ… = Fully supported with tests
  • ๐ŸŸก = Partial support or untested
  • ๐Ÿšซ = Not supported
  • โž– = Not applicable to this format

Note: msgp = facet-msgpack, pcrd = facet-postcard (shortened for column width)

Overview

Note: S = Serialization, D = Deserialization

Crate Direction Format Type Parser Showcase
facet-json SD Text Event-based (custom) ๐Ÿšซ
facet-yaml SD Text Event-based (saphyr-parser) ๐Ÿšซ
facet-toml SD Text Event-based (toml_parser) ๐Ÿšซ
facet-xml SD Text Event-based (quick-xml) ๐Ÿšซ
facet-msgpack SD Binary Event-based (custom) ๐Ÿšซ
facet-postcard SD Binary Event-based (custom) ๐Ÿšซ
facet-asn1 S Binary (Custom) ๐Ÿšซ
facet-xdr S Binary (Custom) ๐Ÿšซ
facet-args D CLI (Custom) View
facet-urlencoded D Text form_urlencoded ๐Ÿšซ
facet-csv S Text (Custom) ๐Ÿšซ

Scalar types

Type json yaml toml xml msgp pcrd asn1 xdr args urlenc csv
bool โœ… โœ… โœ… ๐ŸŸก โœ… โœ… โœ… โœ… โœ… ๐Ÿšซ โœ…
u8..u64 โœ… โœ… โœ… ๐ŸŸก โœ… โœ… โœ… โœ… โœ… โœ… โœ…
i8..i64 โœ… โœ… โœ… ๐ŸŸก โœ… โœ… โœ… โœ… โœ… ๐Ÿšซ โœ…
u128/i128 โœ… โœ… ๐ŸŸก ๐ŸŸก ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก ๐ŸŸก ๐ŸŸก ๐ŸŸก
f32/f64 โœ… โœ… โœ… ๐ŸŸก ๐Ÿšซ โœ… โœ… โœ… โœ… ๐Ÿšซ โœ…
char ๐Ÿšซ โœ… ๐ŸŸก ๐ŸŸก โœ… โœ… ๐ŸŸก ๐ŸŸก ๐Ÿšซ ๐Ÿšซ โœ…
NonZero integers โœ… ๐ŸŸก ๐Ÿšซ ๐ŸŸก ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐ŸŸก ๐ŸŸก โœ…

String types

All formats support String, &str (with best-effort borrowing), and Cow<str>.

Lists, sets, and maps

Type json yaml toml xml msgp pcrd asn1 xdr args urlenc csv
Vec<T> โœ… โœ… โœ… โœ… โœ… โœ… โœ… โœ… โœ… ๐Ÿšซ ๐Ÿšซ
[T; N] (arrays) โœ… โœ… โœ… ๐ŸŸก โœ… โœ… โœ… โœ… ๐ŸŸก ๐Ÿšซ ๐Ÿšซ
HashSet<T> โœ… โœ… ๐Ÿšซ ๐ŸŸก ๐Ÿšซ โœ… ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ
BTreeSet<T> โœ… โœ… ๐Ÿšซ ๐ŸŸก ๐Ÿšซ โœ… ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ
HashMap<K, V> โœ… โœ… โœ… ๐ŸŸก โœ… โœ… ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ
BTreeMap<K, V> โœ… โœ… โœ… ๐ŸŸก ๐ŸŸก โœ… ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ
Non-string map keys โœ… โœ… ๐Ÿšซ ๐Ÿšซ โœ… โœ… ๐Ÿšซ ๐Ÿšซ โž– โž– โž–

Compound types

Type json yaml toml xml msgp pcrd asn1 xdr args urlenc csv
Option<T> โœ… โœ… โœ… โœ… โœ… โœ… ๐ŸŸก โœ… โœ… ๐Ÿšซ โœ…
Result<T, E> ๐Ÿšซ ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐ŸŸก ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ

Smart pointers

Type json yaml toml xml msgp pcrd asn1 xdr args urlenc csv
Box<T> โœ… โœ… ๐Ÿšซ ๐ŸŸก ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก ๐ŸŸก ๐Ÿšซ ๐ŸŸก
Rc<T> โœ… โœ… ๐Ÿšซ ๐ŸŸก ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก ๐ŸŸก ๐Ÿšซ ๐ŸŸก
Arc<T> โœ… โœ… ๐Ÿšซ ๐ŸŸก ๐ŸŸก โœ… ๐ŸŸก ๐ŸŸก ๐ŸŸก ๐Ÿšซ ๐ŸŸก

Attributes

Attribute json yaml toml xml msgp pcrd asn1 xdr args urlenc csv
opaque โœ… ๐Ÿšซ ๐Ÿšซ โœ… ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ
proxy โœ… ๐Ÿšซ ๐Ÿšซ โœ… ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ ๐Ÿšซ