[package]
name = "oxgraph"
version = "0.4.4"
description = "General-purpose, zero-copy graph and hypergraph engine for Rust."
license.workspace = true
readme = "README.md"
keywords = ["graph", "topology", "zero-copy", "no-std", "csr"]
categories = ["data-structures", "no-std"]

authors.workspace = true
edition.workspace = true
repository.workspace = true

[features]
default = []
# Shared layout index/word vocabulary re-exported at `oxgraph::layout`. Enabled
# transitively by every concrete layout/build feature so consumers reach the
# index/word traits through the umbrella.
layout = ["dep:oxgraph-layout-util"]
topology = ["layout", "dep:oxgraph-topology"]
graph = ["topology", "dep:oxgraph-graph"]
hyper = ["topology", "dep:oxgraph-hyper"]
csr = ["graph", "layout", "dep:oxgraph-csr"]
hyper-bcsr = ["hyper", "layout", "dep:oxgraph-hyper-bcsr"]
snapshot = ["dep:oxgraph-snapshot"]
snapshot-alloc = ["snapshot", "oxgraph-snapshot?/alloc"]
algo = ["topology", "dep:oxgraph-algo"]
algo-alloc = ["algo", "oxgraph-algo?/alloc"]
algo-std = ["algo-alloc", "oxgraph-algo?/std"]
property-arrow = ["topology", "dep:oxgraph-property"]
graph-build = ["graph", "csr", "layout", "snapshot-alloc", "oxgraph-csr/build"]
graph-property-arrow = ["graph-build", "property-arrow", "oxgraph-csr/build-property-arrow"]
hyper-build = ["hyper", "hyper-bcsr", "layout", "snapshot-alloc", "oxgraph-hyper-bcsr/build"]
hyper-property-arrow = ["hyper-build", "property-arrow", "oxgraph-hyper-bcsr/build-property-arrow"]
# `postgres` enables the `csc` feature (not just the dep) so the borrowed
# inbound CSC view is reachable at the single canonical path `oxgraph::csc`.
postgres = ["dep:oxgraph-postgres", "csc"]
csc = ["dep:oxgraph-csc"]
# `db` activates only the embedded engine; consumers select graph/hyper/algo
# facade modules explicitly if they want them.
db = ["dep:oxgraph-db"]
full = [
  "algo-std",
  "csr",
  "db",
  "graph-property-arrow",
  "hyper-bcsr",
  "hyper-property-arrow",
  "postgres",
  "snapshot-alloc",
]

[dependencies]
oxgraph-algo = { version = "0.4.4", path = "../oxgraph-algo", optional = true, default-features = false }
oxgraph-csc = { version = "0.4.4", path = "../oxgraph-csc", optional = true }
oxgraph-csr = { version = "0.4.4", path = "../oxgraph-csr", optional = true }
oxgraph-db = { version = "0.4.4", path = "../oxgraph-db", optional = true }
oxgraph-graph = { version = "0.4.4", path = "../oxgraph-graph", optional = true }
oxgraph-hyper = { version = "0.4.4", path = "../oxgraph-hyper", optional = true }
oxgraph-hyper-bcsr = { version = "0.4.4", path = "../oxgraph-hyper-bcsr", optional = true }
oxgraph-layout-util = { version = "0.4.4", path = "../oxgraph-layout-util", optional = true, default-features = false }
oxgraph-postgres = { version = "0.4.4", path = "../oxgraph-postgres", optional = true }
oxgraph-property = { version = "0.4.4", path = "../oxgraph-property", optional = true }
oxgraph-snapshot = { version = "0.4.4", path = "../oxgraph-snapshot", optional = true, default-features = false }
oxgraph-topology = { version = "0.4.4", path = "../oxgraph-topology", optional = true }

[lints]
workspace = true
