# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies
#
# If you believe there's an error in this file please file an
# issue against the rust-lang/cargo repository. If you're
# editing this file be aware that the upstream Cargo.toml
# will likely look very different (and much more reasonable)

[package]
edition = "2018"
name = "signal-hook"
version = "0.1.16"
authors = ["Michal 'vorner' Vaner <vorner@vorner.cz>"]
description = "Unix signal handling"
documentation = "https://docs.rs/signal-hook"
readme = "README.md"
keywords = ["signal", "unix", "daemon"]
license = "Apache-2.0/MIT"
repository = "https://github.com/vorner/signal-hook"
[package.metadata.docs.rs]
all-features = true
[dependencies.futures]
version = "~0.1"
optional = true

[dependencies.libc]
version = "~0.2"

[dependencies.mio]
version = "~0.6"
optional = true

[dependencies.mio_0_7]
version = "~0.7"
features = ["os-util"]
optional = true
package = "mio"

[dependencies.signal-hook-registry]
version = "~1.2"

[dependencies.tokio-reactor]
version = "~0.1"
optional = true
[dev-dependencies.mio_0_7]
version = "~0.7"
features = ["os-poll", "os-util"]
package = "mio"

[dev-dependencies.tokio]
version = "~0.1"

[dev-dependencies.version-sync]
version = "~0.8"

[features]
mio-0_7-support = ["mio_0_7"]
mio-support = ["mio"]
tokio-support = ["futures", "mio-support", "tokio-reactor"]
[badges.maintenance]
status = "actively-developed"

[badges.travis-ci]
repository = "vorner/signal-hook"
