{
  "markdown": "# facet\n\n[![Coverage Status](https://coveralls.io/repos/github/facet-rs/facet-core/badge.svg?branch=main)](https://coveralls.io/github/facet-rs/facet?branch=main)\n[![crates.io](https://img.shields.io/crates/v/facet-core.svg)](https://crates.io/crates/facet-core)\n[![documentation](https://docs.rs/facet-core/badge.svg)](https://docs.rs/facet-core)\n[![MIT/Apache-2.0 licensed](https://img.shields.io/crates/l/facet-core.svg)](./LICENSE)\n[![Discord](https://img.shields.io/discord/1379550208551026748?logo=discord&label=discord)](https://discord.gg/JhD7CwCJ8F)\n\n`facet` is an ecosystem of Rust crates built on runtime reflection.\n\nThe core crates give types a [`SHAPE`](Facet::SHAPE) associated constant with\ntheir kind, layout, fields, documentation, attributes, and type-specific\noperations. `facet-reflect` builds, reads, and mutates values through those\nshapes while preserving their invariants.\n\nSerialization and integration crates build on that reflection layer: JSON,\nTOML, YAML, MessagePack, Postcard, ASN.1, XDR, CSV, XML, URL-encoded forms,\nSQLite, Axum, schema generation, structural diffing, and more.\n\nSome related projects now live in their own repositories:\n\n- [Figue](https://github.com/bearcove/figue) for CLI and configuration loading\n- [Styx](https://github.com/bearcove/styx) for typed configuration documents\n- [Dibs](https://github.com/bearcove/dibs) for Postgres schemas and queries\n- [Phon](https://github.com/bearcove/phon) for schema-aware binary encoding\n- [Vox](https://github.com/bearcove/vox) for cross-language RPC\n- [Weavy](https://github.com/bearcove/weavy) for lowered programs and copy-patch execution\n- [Snark](https://github.com/bearcove/snark) for parser generation\n- [Vixen](https://github.com/vixenware/vixen) for the Vix language and runtime\n\n## Website note\n\nThe <https://facet.rs> website has a lot of information about a lot of the\necosystem but it's unfortunately not super reliable as LLMs have been doing\ntoo much of the writing (on account on Amos being burned out). This is being\nslowly repaired. Bear with us.\n\n## Workspace contents\n\nThe main `facet` crate re-exports symbols from:\n\n- [facet-core](https://github.com/facet-rs/facet/tree/main/facet-core), which defines the main components:\n  - The [`Facet`] trait and implementations for foreign types (mostly `libstd`)\n  - The [`Shape`] struct along with various vtables and the whole [`Def`] tree\n  - Type-erased pointer helpers like [`PtrUninit`], [`PtrConst`], and [`Opaque`]\n  - Autoderef specialization trick needed for `facet-macros`\n- [facet-macros](https://github.com/facet-rs/facet/tree/main/facet-macros), which implements the [`Facet`] derive attribute as a fast/light proc macro powered by [unsynn](https://docs.rs/unsynn)\n\nFor struct manipulation and reflection, we have:\n\n- [facet-reflect](https://github.com/facet-rs/facet/tree/main/facet-reflect),\n  allows building values of arbitrary shapes in safe code, respecting invariants.\n  It also allows peeking at existing values.\n\nInternal crates include:\n\n- [facet-testhelpers](https://github.com/facet-rs/facet/tree/main/facet-testhelpers) a simple log logger and color-backtrace configured with the lightweight btparse backend\n\n## Ecosystem\n\nVarious crates live under the <https://github.com/facet-rs> umbrella, and their\nrepositories are kept somewhat-consistent through [facet-dev](https://github.com/facet-rs/facet-dev).\n\nCrates are in various states of progress, buyer beware!\n\nIn terms of data formats, we have:\n\n- [facet-json](https://github.com/facet-rs/facet-format/tree/main/facet-json): JSON format support\n- [facet-toml](https://github.com/facet-rs/facet-format/tree/main/facet-toml): TOML format support\n- [facet-yaml](https://github.com/facet-rs/facet-format/tree/main/facet-yaml): YAML format support\n- [facet-msgpack](https://github.com/facet-rs/facet-format/tree/main/facet-msgpack): MessagePack deserialization\n- [facet-asn1](https://github.com/facet-rs/facet-format/tree/main/facet-asn1): ASN.1 format support\n- [facet-xdr](https://github.com/facet-rs/facet-format/tree/main/facet-xdr): XDR format support\n- [facet-csv](https://github.com/facet-rs/facet-format/tree/main/facet-csv): CSV format support\n- [facet-xml](https://github.com/facet-rs/facet-format/tree/main/facet-xml): XML format support\n\nStill adjacent to serialization/deserialization, we have:\n\n- [facet-urlencoded](https://github.com/facet-rs/facet/tree/main/facet-urlencoded): URL-encoded form data deserialization\n- [figue](https://github.com/bearcove/figue): CLI arguments, config files, and environment variables (external crate)\n\nAs far as utilities go:\n\n- [facet-value](https://github.com/facet-rs/facet/tree/main/facet-value): Memory-efficient dynamic value type, supporting JSON-like data plus bytes\n- [facet-pretty](https://github.com/facet-rs/facet/tree/main/facet-pretty): Pretty-print Facet types\n- [facet-diff](https://github.com/facet-rs/facet/tree/main/facet-diff): Diffing capabilities for Facet types\n- [facet-assert](https://github.com/facet-rs/facet/tree/main/facet-assert): Pretty assertions for Facet types (no PartialEq required)\n- [facet-serialize](https://github.com/facet-rs/facet-serialize): Generic iterative serialization facilities\n- [facet-deserialize](https://github.com/facet-rs/facet-deserialize): Generic iterative deserialization facilities\n\nAnd the less developed:\n\n- [facet-inspect](https://github.com/facet-rs/facet-inspect): Utilities to inspect the content of a Facet object\n\n## Previously separate crates\n\nThese crates previously lived in separate repositories and now live in this monorepo:\n\n- [facet-xml](https://github.com/facet-rs/facet-format/tree/main/facet-xml): XML/DOM ecosystem (includes facet-xml, facet-dom, facet-svg, facet-atom, facet-xml-node, facet-singularize)\n- [facet-axum](https://github.com/facet-rs/facet-axum): Axum web framework integration\n\n## Extended cinematic universe\n\nSome crates are developed completely independently from the facet org:\n\n- [facet-v8](https://github.com/simonask/facet-v8) provides an experimental Facet/v8 integration\n- [facet-openapi](https://github.com/ThouCheese/facet-openapi) (experimental) Generates OpenAPI definitions from types that implement Facet\n- [facet_generate](https://github.com/redbadger/facet-generate) reflects Facet types into Java, Swift and TypeScript\n- [multi-array-list](https://lib.rs/crates/multi-array-list) provides an experimental `MultiArrayList` type\n\n## Sponsors\n\nThanks to all individual sponsors:\n\n<p> <a href=\"https://github.com/sponsors/fasterthanlime\">\n<picture>\n<source media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/facet-rs/facet/raw/main/static/sponsors-v3/github-dark.svg\">\n<img src=\"https://github.com/facet-rs/facet/raw/main/static/sponsors-v3/github-light.svg\" height=\"40\" alt=\"GitHub Sponsors\">\n</picture>\n</a> <a href=\"https://patreon.com/fasterthanlime\">\n    <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/facet-rs/facet/raw/main/static/sponsors-v3/patreon-dark.svg\">\n    <img src=\"https://github.com/facet-rs/facet/raw/main/static/sponsors-v3/patreon-light.svg\" height=\"40\" alt=\"Patreon\">\n    </picture>\n</a> </p>\n\n...without whom this work could not exist.\n\n## Special thanks\n\nThe facet logo was drawn by [Misiasart](https://misiasart.com/).\n\n## License\n\nLicensed under either of:\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](https://github.com/facet-rs/facet/blob/main/LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT license ([LICENSE-MIT](https://github.com/facet-rs/facet/blob/main/LICENSE-MIT) or <http://opensource.org/licenses/MIT>)\n\nat your option.\n",
  "bytes": 7626,
  "sha": "b9b66cdc765a33b75af5662752f6bef0b81f370838310300d7668d5edc6e2e6c",
  "repo_slug": "facet-rs/facet",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_facet_rs_facet_testing_debug_with_valgri_10212e70/readme"
}