[package]
name = "kwokka"
version = "0.1.0"
description = "completion-based async runtime with optional orchestration"
readme = "../../README.md"
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
keywords = ["async", "runtime", "io-uring", "completion", "kwokka"]
categories = ["asynchronous", "concurrency"]

[features]
net = ["dep:kwokka-net"]
fs = ["dep:kwokka-fs"]
stealing = ["kwokka-runtime/steal"]
full = ["net", "fs", "stealing"]

[dependencies]
kwokka-core.workspace = true
kwokka-macros.workspace = true
kwokka-runtime.workspace = true
kwokka-net = { workspace = true, optional = true }
kwokka-fs = { workspace = true, optional = true }

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

[lints]
workspace = true

[package.metadata.cargo-machete]
ignored = ["kwokka-core", "kwokka-macros", "kwokka-runtime", "kwokka-net", "kwokka-fs"]

# Feature-free examples; auto-discovery would find them, but the explicit
# entries keep the example set documented alongside the gated ones.
[[example]]
name = "affine"

[[example]]
name = "sleep"

[[example]]
name = "scope"

# Gated examples: required-features keeps `cargo build --examples` (no
# features) from compiling them, so a minimal build stays minimal.
[[example]]
name = "stealing"
required-features = ["stealing"]

[[example]]
name = "tcp_echo"
required-features = ["net"]

[[example]]
name = "file_read"
required-features = ["fs"]
