facet is a reflection library for Rust. One derive macro gives you serialization, pretty-printing, diffing, and more.

#[derive(Facet)]
struct Config {
    name: String,
    port: u16,
    #[facet(sensitive)]
    api_key: String,
}

From this single derive, you get:

Choose Your Path

Learn

I want to serialize my types

For application developers using facet-json, facet-yaml, etc. Covers installation, attributes, and format-specific guides.

Extend

I want to build tools with facet

Coming soon — For developers building format crates or tools using reflection (Shape, Peek, Partial).

Contribute

I want to work on facet itself

Coming soon — Architecture, proc macro internals, vtables, and development setup.

Quick Links