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

CrateDirectionFormat TypeParserShowcase
facet-jsonSDTextEvent-based (custom)View
facet-kdlSDText (node-based)DOM (kdl)View
facet-yamlSDTextEvent-based (saphyr-parser)View
facet-tomlSDTextEvent-based (toml_parser)View
facet-xmlSDTextEvent-based (quick-xml)๐Ÿšซ
facet-msgpackSDBinaryEvent-based (custom)๐Ÿšซ
facet-postcardSDBinaryEvent-based (custom)๐Ÿšซ
facet-asn1SBinary(Custom)๐Ÿšซ
facet-xdrSBinary(Custom)๐Ÿšซ
facet-argsDCLI(Custom)View
facet-urlencodedDTextform_urlencoded๐Ÿšซ
facet-csvSText(Custom)๐Ÿšซ

Scalar types

Typejsonkdlyamltomlxmlmsgppcrdasn1xdrargsurlenccsv
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

Typejsonkdlyamltomlxmlmsgppcrdasn1xdrargsurlenccsv
Vec<T>โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ
[T; N] (arrays)โœ…๐ŸŸกโœ…โœ…๐ŸŸกโœ…โœ…โœ…โœ…๐ŸŸก๐Ÿšซ๐Ÿšซ
HashSet<T>โœ…โœ…โœ…๐Ÿšซ๐ŸŸก๐Ÿšซโœ…๐ŸŸก๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ
BTreeSet<T>โœ…โœ…โœ…๐Ÿšซ๐ŸŸก๐Ÿšซโœ…๐ŸŸก๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ
HashMap<K, V>โœ…๐ŸŸกโœ…โœ…๐ŸŸกโœ…โœ…๐ŸŸก๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ
BTreeMap<K, V>โœ…๐ŸŸกโœ…โœ…๐ŸŸก๐ŸŸกโœ…๐ŸŸก๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ
Non-string map keysโœ…๐Ÿšซโœ…๐Ÿšซ๐Ÿšซโœ…โœ…๐Ÿšซ๐Ÿšซโž–โž–โž–

Compound types

Typejsonkdlyamltomlxmlmsgppcrdasn1xdrargsurlenccsv
Option<T>โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐ŸŸกโœ…โœ…๐Ÿšซโœ…
Result<T, E>๐Ÿšซ๐ŸŸก๐ŸŸก๐Ÿšซ๐Ÿšซ๐Ÿšซ๐ŸŸก๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ

Smart pointers

Typejsonkdlyamltomlxmlmsgppcrdasn1xdrargsurlenccsv
Box<T>โœ…โœ…โœ…๐Ÿšซ๐ŸŸก๐ŸŸกโœ…๐ŸŸก๐ŸŸก๐ŸŸก๐Ÿšซ๐ŸŸก
Rc<T>โœ…โœ…โœ…๐Ÿšซ๐ŸŸก๐ŸŸกโœ…๐ŸŸก๐ŸŸก๐ŸŸก๐Ÿšซ๐ŸŸก
Arc<T>โœ…โœ…โœ…๐Ÿšซ๐ŸŸก๐ŸŸกโœ…๐ŸŸก๐ŸŸก๐ŸŸก๐Ÿšซ๐ŸŸก

Attributes

Attributejsonkdlyamltomlxmlmsgppcrdasn1xdrargsurlenccsv
opaqueโœ…โœ…๐Ÿšซ๐Ÿšซโœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ
proxyโœ…โœ…๐Ÿšซ๐Ÿšซโœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ๐Ÿšซ