[package]
authors = ["Max Willsey <me@mwillsey.com>"]
categories = ["data-structures"]
description = "An implementation of egraphs"
edition = "2018"
keywords = ["e-graphs"]
license = "MIT"
name = "egg"
readme = "README.md"
repository = "https://github.com/egraphs-good/egg"
version = "0.11.0"

[dependencies]
env_logger = {version = "0.9.0", default-features = false}
hashbrown = "0.15.2"
indexmap = "2.7.0"
log = "0.4.17"
num-bigint = "0.4"
num-traits = "0.2"
quanta = "0.12"
rustc-hash = "2.0.0"
smallvec = {version = "1.8.0", features = ["union", "const_generics"]}
symbol_table = {version = "0.4.0", features = ["global"]}
symbolic_expressions = "5.0.3"
thiserror = "1.0.31"

# for the lp feature
good_lp = { version = "1", optional = true }

# for the serde-1 feature
serde = {version = "1.0.137", features = ["derive"], optional = true}
vectorize = {version = "0.2.0", optional = true}

# for the reports feature
serde_json = {version = "1.0.81", optional = true}

[dev-dependencies]
ordered-float = "3.0.0"

[features]
# forces the use of indexmaps over hashmaps
deterministic = []
lp = ["good_lp"]
reports = ["serde-1", "serde_json"]
serde-1 = [
  "serde",
  "indexmap/serde",
  "hashbrown/serde",
  "symbol_table/serde",
  "vectorize",
]
wasm-bindgen = []

# private features for testing
test-explanations = []

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
