[package]
name = "facet-reflect"
version = "0.32.1"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
description = "Allows peeking (reading from) and poking (writing to) types that implement Facet"
keywords = ["reflection", "introspection", "facet", "peek", "poke"]
categories = ["development-tools", "rust-patterns"]

[package.metadata.docs.rs]
rustdoc-args = ["--html-in-header", "docs/meta/arborium-header.html"]

[features]
default = ["std"]
std = ["alloc"] # Enable the standard library features
alloc = [
    "facet-core/alloc",
] # Enable the allocation features
log = [
    "dep:log",
] # Enable logging of reflection operations (mostly for internal development)
slow-tests = [] # Enable slow tests (compile tests)
ci = ["slow-tests"] # CI feature
fuzz-tests = [] # Enable proptest-based fuzz tests (very slow, not run in CI)
camino = [
    "alloc",
    "dep:camino",
    "facet-core/camino",
] # Enable Facet implementation for camino path types
uuid = [
    "alloc",
    "dep:uuid",
    "facet-core/uuid",
] # Enable Facet implementation for UUID types
ulid = [
    "alloc",
    "dep:ulid",
    "facet-core/ulid",
] # Enable Facet implementation for ULID types
time = ["facet-core/time"] # Enable Facet implementation for time types
jiff02 = ["facet-core/jiff02"] # Enable Facet implementation for jiff 0.2 types
fn-ptr = [
    "facet-core/fn-ptr",
] # Enable Facet implementation for function pointers
miette = ["dep:miette"] # Enable Spanned<T> type for source span tracking

[dependencies]
facet-core = { path = "../facet-core", version = "0.32.1", default-features = false }
facet-macros = { path = "../facet-macros", version = "0.32.1" }
log = { version = "0.4.27", optional = true }
camino = { version = "1", optional = true }
uuid = { version = "1.17.0", optional = true }
ulid = { version = "1.2.1", optional = true }
miette = { version = "7", optional = true, default-features = false }

[dev-dependencies]
facet = { path = "../facet", features = ["net", "nonzero"] }
facet-testhelpers = { path = "../facet-testhelpers" }
facet-value = { path = "../facet-value" }
insta = "1.43.1"
log = "0.4.27"
tempfile = "3.20.0"
eyre = "0.6.12"
proptest = "1.9"
