# 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.71"
name = "tokio"
version = "1.53.0"
authors = ["Tokio Contributors <team@tokio.rs>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
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.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
    "--cfg",
    "tokio_unstable",
]
rustc-args = [
    "--cfg",
    "tokio_unstable",
]

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

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

[features]
default = []
fs = []
full = [
    "fs",
    "io-util",
    "io-std",
    "macros",
    "net",
    "parking_lot",
    "process",
    "rt",
    "rt-multi-thread",
    "signal",
    "sync",
    "time",
]
io-std = []
io-uring = [
    "dep:io-uring",
    "libc",
    "mio/os-poll",
    "mio/os-ext",
    "dep:slab",
]
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 = ["rt"]
schedule-latency = []
signal = [
    "libc",
    "mio/os-poll",
    "mio/net",
    "mio/os-ext",
    "signal-hook-registry",
    "windows-sys/Win32_Foundation",
    "windows-sys/Win32_System_Console",
]
sync = []
taskdump = ["dep:backtrace"]
test-util = [
    "rt",
    "sync",
    "time",
]
time = []

[lib]
name = "tokio"
path = "src/lib.rs"

[[test]]
name = "_require_full"
path = "tests/_require_full.rs"

[[test]]
name = "async_send_sync"
path = "tests/async_send_sync.rs"

[[test]]
name = "buffered"
path = "tests/buffered.rs"

[[test]]
name = "coop_budget"
path = "tests/coop_budget.rs"

[[test]]
name = "dump"
path = "tests/dump.rs"

[[test]]
name = "duplex_stream"
path = "tests/duplex_stream.rs"

[[test]]
name = "fs"
path = "tests/fs.rs"

[[test]]
name = "fs_canonicalize_dir"
path = "tests/fs_canonicalize_dir.rs"

[[test]]
name = "fs_copy"
path = "tests/fs_copy.rs"

[[test]]
name = "fs_dir"
path = "tests/fs_dir.rs"

[[test]]
name = "fs_file"
path = "tests/fs_file.rs"

[[test]]
name = "fs_link"
path = "tests/fs_link.rs"

[[test]]
name = "fs_open_options"
path = "tests/fs_open_options.rs"

[[test]]
name = "fs_open_options_windows"
path = "tests/fs_open_options_windows.rs"

[[test]]
name = "fs_remove_dir_all"
path = "tests/fs_remove_dir_all.rs"

[[test]]
name = "fs_remove_file"
path = "tests/fs_remove_file.rs"

[[test]]
name = "fs_rename"
path = "tests/fs_rename.rs"

[[test]]
name = "fs_symlink_dir_windows"
path = "tests/fs_symlink_dir_windows.rs"

[[test]]
name = "fs_symlink_file_windows"
path = "tests/fs_symlink_file_windows.rs"

[[test]]
name = "fs_try_exists"
path = "tests/fs_try_exists.rs"

[[test]]
name = "fs_uring"
path = "tests/fs_uring.rs"

[[test]]
name = "fs_uring_cancel_open"
path = "tests/fs_uring_cancel_open.rs"

[[test]]
name = "fs_uring_completed_then_dropped_before_repoll"
path = "tests/fs_uring_completed_then_dropped_before_repoll.rs"

[[test]]
name = "fs_uring_file_read"
path = "tests/fs_uring_file_read.rs"

[[test]]
name = "fs_uring_read"
path = "tests/fs_uring_read.rs"

[[test]]
name = "fs_uring_rename"
path = "tests/fs_uring_rename.rs"

[[test]]
name = "fs_uring_runtime_shutdown"
path = "tests/fs_uring_runtime_shutdown.rs"

[[test]]
name = "fs_uring_statx"
path = "tests/fs_uring_statx.rs"

[[test]]
name = "fs_uring_statx_fd_leak_test"
path = "tests/fs_uring_statx_fd_leak_test.rs"

[[test]]
name = "fs_write"
path = "tests/fs_write.rs"

[[test]]
name = "io_async_fd"
path = "tests/io_async_fd.rs"

[[test]]
name = "io_async_fd_memory_leak"
path = "tests/io_async_fd_memory_leak.rs"

[[test]]
name = "io_async_read"
path = "tests/io_async_read.rs"

[[test]]
name = "io_buf_reader"
path = "tests/io_buf_reader.rs"

[[test]]
name = "io_buf_writer"
path = "tests/io_buf_writer.rs"

[[test]]
name = "io_chain"
path = "tests/io_chain.rs"

[[test]]
name = "io_copy"
path = "tests/io_copy.rs"

[[test]]
name = "io_copy_bidirectional"
path = "tests/io_copy_bidirectional.rs"

[[test]]
name = "io_driver"
path = "tests/io_driver.rs"

[[test]]
name = "io_driver_drop"
path = "tests/io_driver_drop.rs"

[[test]]
name = "io_fill_buf"
path = "tests/io_fill_buf.rs"

[[test]]
name = "io_join"
path = "tests/io_join.rs"

[[test]]
name = "io_lines"
path = "tests/io_lines.rs"

[[test]]
name = "io_mem_stream"
path = "tests/io_mem_stream.rs"

[[test]]
name = "io_panic"
path = "tests/io_panic.rs"

[[test]]
name = "io_poll_aio"
path = "tests/io_poll_aio.rs"

[[test]]
name = "io_read"
path = "tests/io_read.rs"

[[test]]
name = "io_read_buf"
path = "tests/io_read_buf.rs"

[[test]]
name = "io_read_exact"
path = "tests/io_read_exact.rs"

[[test]]
name = "io_read_line"
path = "tests/io_read_line.rs"

[[test]]
name = "io_read_to_end"
path = "tests/io_read_to_end.rs"

[[test]]
name = "io_read_to_string"
path = "tests/io_read_to_string.rs"

[[test]]
name = "io_read_until"
path = "tests/io_read_until.rs"

[[test]]
name = "io_repeat"
path = "tests/io_repeat.rs"

[[test]]
name = "io_sink"
path = "tests/io_sink.rs"

[[test]]
name = "io_split"
path = "tests/io_split.rs"

[[test]]
name = "io_take"
path = "tests/io_take.rs"

[[test]]
name = "io_util_empty"
path = "tests/io_util_empty.rs"

[[test]]
name = "io_write"
path = "tests/io_write.rs"

[[test]]
name = "io_write_all"
path = "tests/io_write_all.rs"

[[test]]
name = "io_write_all_buf"
path = "tests/io_write_all_buf.rs"

[[test]]
name = "io_write_buf"
path = "tests/io_write_buf.rs"

[[test]]
name = "io_write_int"
path = "tests/io_write_int.rs"

[[test]]
name = "join_handle_panic"
path = "tests/join_handle_panic.rs"

[[test]]
name = "macros_join"
path = "tests/macros_join.rs"

[[test]]
name = "macros_pin"
path = "tests/macros_pin.rs"

[[test]]
name = "macros_rename_test"
path = "tests/macros_rename_test.rs"

[[test]]
name = "macros_select"
path = "tests/macros_select.rs"

[[test]]
name = "macros_test"
path = "tests/macros_test.rs"

[[test]]
name = "macros_try_join"
path = "tests/macros_try_join.rs"

[[test]]
name = "net_bind_resource"
path = "tests/net_bind_resource.rs"

[[test]]
name = "net_lookup_host"
path = "tests/net_lookup_host.rs"

[[test]]
name = "net_named_pipe"
path = "tests/net_named_pipe.rs"

[[test]]
name = "net_panic"
path = "tests/net_panic.rs"

[[test]]
name = "net_quickack"
path = "tests/net_quickack.rs"

[[test]]
name = "net_unix_pipe"
path = "tests/net_unix_pipe.rs"

[[test]]
name = "no_rt"
path = "tests/no_rt.rs"

[[test]]
name = "process_arg0"
path = "tests/process_arg0.rs"

[[test]]
name = "process_change_of_runtime"
path = "tests/process_change_of_runtime.rs"

[[test]]
name = "process_issue_2174"
path = "tests/process_issue_2174.rs"

[[test]]
name = "process_issue_42"
path = "tests/process_issue_42.rs"

[[test]]
name = "process_issue_7144"
path = "tests/process_issue_7144.rs"

[[test]]
name = "process_kill_after_wait"
path = "tests/process_kill_after_wait.rs"

[[test]]
name = "process_kill_on_drop"
path = "tests/process_kill_on_drop.rs"

[[test]]
name = "process_raw_handle"
path = "tests/process_raw_handle.rs"

[[test]]
name = "process_smoke"
path = "tests/process_smoke.rs"

[[test]]
name = "rt_basic"
path = "tests/rt_basic.rs"

[[test]]
name = "rt_common"
path = "tests/rt_common.rs"

[[test]]
name = "rt_common_before_park"
path = "tests/rt_common_before_park.rs"

[[test]]
name = "rt_handle"
path = "tests/rt_handle.rs"

[[test]]
name = "rt_handle_block_on"
path = "tests/rt_handle_block_on.rs"

[[test]]
name = "rt_local"
path = "tests/rt_local.rs"

[[test]]
name = "rt_metrics"
path = "tests/rt_metrics.rs"

[[test]]
name = "rt_panic"
path = "tests/rt_panic.rs"

[[test]]
name = "rt_poll_callbacks"
path = "tests/rt_poll_callbacks.rs"

[[test]]
name = "rt_shutdown_err"
path = "tests/rt_shutdown_err.rs"

[[test]]
name = "rt_spawn_blocking"
path = "tests/rt_spawn_blocking.rs"

[[test]]
name = "rt_threaded"
path = "tests/rt_threaded.rs"

[[test]]
name = "rt_time_start_paused"
path = "tests/rt_time_start_paused.rs"

[[test]]
name = "rt_unstable_eager_driver_handoff"
path = "tests/rt_unstable_eager_driver_handoff.rs"

[[test]]
name = "rt_unstable_metrics"
path = "tests/rt_unstable_metrics.rs"

[[test]]
name = "rt_worker_index"
path = "tests/rt_worker_index.rs"

[[test]]
name = "signal_ctrl_c"
path = "tests/signal_ctrl_c.rs"

[[test]]
name = "signal_drop_recv"
path = "tests/signal_drop_recv.rs"

[[test]]
name = "signal_drop_rt"
path = "tests/signal_drop_rt.rs"

[[test]]
name = "signal_drop_signal"
path = "tests/signal_drop_signal.rs"

[[test]]
name = "signal_info"
path = "tests/signal_info.rs"

[[test]]
name = "signal_multi_rt"
path = "tests/signal_multi_rt.rs"

[[test]]
name = "signal_no_rt"
path = "tests/signal_no_rt.rs"

[[test]]
name = "signal_notify_both"
path = "tests/signal_notify_both.rs"

[[test]]
name = "signal_panic"
path = "tests/signal_panic.rs"

[[test]]
name = "signal_realtime"
path = "tests/signal_realtime.rs"

[[test]]
name = "signal_twice"
path = "tests/signal_twice.rs"

[[test]]
name = "signal_usr1"
path = "tests/signal_usr1.rs"

[[test]]
name = "sync_barrier"
path = "tests/sync_barrier.rs"

[[test]]
name = "sync_broadcast"
path = "tests/sync_broadcast.rs"

[[test]]
name = "sync_broadcast_weak"
path = "tests/sync_broadcast_weak.rs"

[[test]]
name = "sync_errors"
path = "tests/sync_errors.rs"

[[test]]
name = "sync_mpsc"
path = "tests/sync_mpsc.rs"

[[test]]
name = "sync_mpsc_weak"
path = "tests/sync_mpsc_weak.rs"

[[test]]
name = "sync_mutex"
path = "tests/sync_mutex.rs"

[[test]]
name = "sync_mutex_owned"
path = "tests/sync_mutex_owned.rs"

[[test]]
name = "sync_notify"
path = "tests/sync_notify.rs"

[[test]]
name = "sync_notify_owned"
path = "tests/sync_notify_owned.rs"

[[test]]
name = "sync_once_cell"
path = "tests/sync_once_cell.rs"

[[test]]
name = "sync_oneshot"
path = "tests/sync_oneshot.rs"

[[test]]
name = "sync_panic"
path = "tests/sync_panic.rs"

[[test]]
name = "sync_rwlock"
path = "tests/sync_rwlock.rs"

[[test]]
name = "sync_semaphore"
path = "tests/sync_semaphore.rs"

[[test]]
name = "sync_semaphore_owned"
path = "tests/sync_semaphore_owned.rs"

[[test]]
name = "sync_set_once"
path = "tests/sync_set_once.rs"

[[test]]
name = "sync_watch"
path = "tests/sync_watch.rs"

[[test]]
name = "task_abort"
path = "tests/task_abort.rs"

[[test]]
name = "task_blocking"
path = "tests/task_blocking.rs"

[[test]]
name = "task_builder"
path = "tests/task_builder.rs"

[[test]]
name = "task_hooks"
path = "tests/task_hooks.rs"

[[test]]
name = "task_id"
path = "tests/task_id.rs"

[[test]]
name = "task_join_set"
path = "tests/task_join_set.rs"

[[test]]
name = "task_local"
path = "tests/task_local.rs"

[[test]]
name = "task_local_set"
path = "tests/task_local_set.rs"

[[test]]
name = "task_panic"
path = "tests/task_panic.rs"

[[test]]
name = "task_trace_self"
path = "tests/task_trace_self.rs"

[[test]]
name = "task_yield_now"
path = "tests/task_yield_now.rs"

[[test]]
name = "tcp_accept"
path = "tests/tcp_accept.rs"

[[test]]
name = "tcp_connect"
path = "tests/tcp_connect.rs"

[[test]]
name = "tcp_echo"
path = "tests/tcp_echo.rs"

[[test]]
name = "tcp_into_split"
path = "tests/tcp_into_split.rs"

[[test]]
name = "tcp_into_std"
path = "tests/tcp_into_std.rs"

[[test]]
name = "tcp_peek"
path = "tests/tcp_peek.rs"

[[test]]
name = "tcp_shutdown"
path = "tests/tcp_shutdown.rs"

[[test]]
name = "tcp_socket"
path = "tests/tcp_socket.rs"

[[test]]
name = "tcp_split"
path = "tests/tcp_split.rs"

[[test]]
name = "tcp_stream"
path = "tests/tcp_stream.rs"

[[test]]
name = "test_clock"
path = "tests/test_clock.rs"

[[test]]
name = "time_alt"
path = "tests/time_alt.rs"

[[test]]
name = "time_interval"
path = "tests/time_interval.rs"

[[test]]
name = "time_panic"
path = "tests/time_panic.rs"

[[test]]
name = "time_pause"
path = "tests/time_pause.rs"

[[test]]
name = "time_rt"
path = "tests/time_rt.rs"

[[test]]
name = "time_sleep"
path = "tests/time_sleep.rs"

[[test]]
name = "time_timeout"
path = "tests/time_timeout.rs"

[[test]]
name = "time_wasm"
path = "tests/time_wasm.rs"

[[test]]
name = "tracing_sync"
path = "tests/tracing_sync.rs"

[[test]]
name = "tracing_task"
path = "tests/tracing_task.rs"

[[test]]
name = "tracing_time"
path = "tests/tracing_time.rs"

[[test]]
name = "udp"
path = "tests/udp.rs"

[[test]]
name = "uds_cred"
path = "tests/uds_cred.rs"

[[test]]
name = "uds_datagram"
path = "tests/uds_datagram.rs"

[[test]]
name = "uds_socket"
path = "tests/uds_socket.rs"

[[test]]
name = "uds_split"
path = "tests/uds_split.rs"

[[test]]
name = "uds_stream"
path = "tests/uds_stream.rs"

[[test]]
name = "unwindsafe"
path = "tests/unwindsafe.rs"

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

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

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

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

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

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

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

[dev-dependencies.futures-concurrency]
version = "7.6.3"

[dev-dependencies.futures-test]
version = "0.3.31"

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

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

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

[dev-dependencies.tokio-util]
version = "0.7"
features = ["rt"]

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

[target.'cfg(all(tokio_unstable, target_has_atomic = "64"))'.dev-dependencies.tracing-mock]
version = "= 0.1.0-beta.1"

[target.'cfg(all(tokio_unstable, target_os = "linux"))'.dependencies.backtrace]
version = "0.3.58"
optional = true

[target.'cfg(all(tokio_unstable, target_os = "linux"))'.dependencies.io-uring]
version = "0.7.11"
optional = true
default-features = false

[target.'cfg(all(tokio_unstable, target_os = "linux"))'.dependencies.libc]
version = "0.2.168"
optional = true

[target.'cfg(all(tokio_unstable, target_os = "linux"))'.dependencies.mio]
version = "1.2.0"
features = [
    "os-poll",
    "os-ext",
]
optional = true
default-features = false

[target.'cfg(all(tokio_unstable, target_os = "linux"))'.dependencies.slab]
version = "0.4.9"
optional = true

[target.'cfg(all(tokio_unstable, target_os = "linux"))'.dev-dependencies.backtrace]
version = "0.3.58"

[target.'cfg(any(not(target_family = "wasm"), all(target_os = "wasi", not(target_env = "p1"))))'.dependencies.socket2]
version = "0.6.3"
features = ["all"]
optional = true

[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.9"

[target.'cfg(not(target_family = "wasm"))'.dev-dependencies.proptest]
version = "1"

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

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

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

[target.'cfg(target_os = "wasi")'.dependencies.libc]
version = "0.2.168"
optional = true

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

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

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

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

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

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

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

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
    "cfg(fuzzing)",
    "cfg(loom)",
    "cfg(mio_unsupported_force_poll_poll)",
    "cfg(tokio_allow_from_blocking_fd)",
    "cfg(tokio_internal_mt_counters)",
    "cfg(tokio_no_parking_lot)",
    "cfg(tokio_no_tuning_tests)",
    "cfg(tokio_unstable)",
    'cfg(target_os, values("cygwin"))',
]
