# 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 are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.63"
name = "tokio"
version = "1.36.0"
authors = ["Tokio Contributors <team@tokio.rs>"]
description = """
An event-driven, non-blocking I/O platform for writing asynchronous I/O
backed applications.
"""
homepage = "https://tokio.rs"
readme = "README.md"
keywords = [
    "io",
    "async",
    "non-blocking",
    "futures",
]
categories = [
    "asynchronous",
    "network-programming",
]
license = "MIT"
repository = "https://github.com/tokio-rs/tokio"

[package.metadata.cargo_check_external_types]
allowed_external_types = [
    "bytes::buf::buf_impl::Buf",
    "bytes::buf::buf_mut::BufMut",
    "tokio_macros::*",
]

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

[package.metadata.playground]
features = [
    "full",
    "test-util",
]

[dependencies.bytes]
version = "1.0.0"
optional = true

[dependencies.mio]
version = "0.8.9"
optional = true
default-features = false

[dependencies.num_cpus]
version = "1.8.0"
optional = true

[dependencies.parking_lot]
version = "0.12.0"
optional = true

[dependencies.pin-project-lite]
version = "0.2.11"

[dependencies.tokio-macros]
version = "~2.2.0"
optional = true

[dev-dependencies.async-stream]
version = "0.3"

[dev-dependencies.futures]
version = "0.3.0"
features = ["async-await"]

[dev-dependencies.mockall]
version = "0.11.1"

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

[dev-dependencies.tokio-test]
version = "0.4.0"

[features]
default = []
fs = []
full = [
    "fs",
    "io-util",
    "io-std",
    "macros",
    "net",
    "parking_lot",
    "process",
    "rt",
    "rt-multi-thread",
    "signal",
    "sync",
    "time",
]
io-std = []
io-util = ["bytes"]
macros = ["tokio-macros"]
net = [
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "mio/net",
    "socket2",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_Security",
    "windows-sys/Win32_Storage_FileSystem",
    "windows-sys/Win32_System_Pipes",
    "windows-sys/Win32_System_SystemServices",
]
process = [
    "bytes",
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "mio/net",
    "signal-hook-registry",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_System_Threading",
    "windows-sys/Win32_System_WindowsProgramming",
]
rt = []
rt-multi-thread = [
    "num_cpus",
    "rt",
]
signal = [
    "libc",
    "mio/os-poll",
    "mio/net",
    "mio/os-ext",
    "signal-hook-registry",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_System_Console",
]
sync = []
test-util = [
    "rt",
    "sync",
    "time",
]
time = []

[target."cfg(all(target_family = \"wasm\", not(target_os = \"wasi\")))".dev-dependencies.wasm-bindgen-test]
version = "0.3.0"

[target."cfg(loom)".dev-dependencies.loom]
version = "0.7"
features = [
    "futures",
    "checkpoint",
]

[target."cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))".dev-dependencies.rand]
version = "0.8.0"

[target."cfg(not(target_family = \"wasm\"))".dependencies.socket2]
version = "0.5.5"
features = ["all"]
optional = true

[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.socket2]
version = "0.5.5"

[target."cfg(not(target_family = \"wasm\"))".dev-dependencies.tempfile]
version = "3.1.0"

[target."cfg(target_os = \"freebsd\")".dev-dependencies.mio-aio]
version = "0.8.0"
features = ["tokio"]

[target."cfg(tokio_taskdump)".dependencies.backtrace]
version = "0.3.58"

[target."cfg(tokio_unstable)".dependencies.tracing]
version = "0.1.25"
features = ["std"]
optional = true
default-features = false

[target."cfg(unix)".dependencies.libc]
version = "0.2.149"
optional = true

[target."cfg(unix)".dependencies.signal-hook-registry]
version = "1.1.1"
optional = true

[target."cfg(unix)".dev-dependencies.libc]
version = "0.2.149"

[target."cfg(unix)".dev-dependencies.nix]
version = "0.27.1"
features = [
    "fs",
    "socket",
]
default-features = false

[target."cfg(windows)".dependencies.windows-sys]
version = "0.48"
optional = true

[target."cfg(windows)".dev-dependencies.windows-sys]
version = "0.48"
features = [
    "Win32_Foundation",
    "Win32_Security_Authorization",
]
