###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
#     bazel run //vendor_local_pkgs:crates_vendor
###############################################################################

load(
    "@bazel_skylib//lib:selects.bzl",
    "selects",
)

# buildifier: disable=bzl-visibility
load("@rules_rust//crate_universe/private:selects.bzl", "select_with_or")
load(
    "@rules_rust//rust:defs.bzl",
    "rust_library",
)

package(default_visibility = ["//visibility:public"])

# licenses([
#     "TODO",  # MIT
# ])

rust_library(
    name = "tower",
    srcs = glob(
        include = [
            "**/*.rs",
        ],
        exclude = [
        ],
    ),
    aliases = selects.with_or({
        "//conditions:default": {
        },
    }),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ) + select_with_or({
        "//conditions:default": [
        ],
    }),
    crate_features = [
        "__common",
        "buffer",
        "default",
        "futures-core",
        "futures-util",
        "log",
        "make",
        "pin-project",
        "pin-project-lite",
        "tokio",
        "tokio-util",
        "tracing",
        "util",
    ],
    crate_root = "src/lib.rs",
    data = select_with_or({
        "//conditions:default": [
        ],
    }),
    edition = "2018",
    proc_macro_deps = [
    ] + select_with_or({
        "//conditions:default": [
        ],
    }),
    rustc_env = {
    },
    rustc_env_files = select_with_or({
        "//conditions:default": [
        ],
    }),
    rustc_flags = [
        # In most cases, warnings in 3rd party crates are not interesting as
        # they're out of the control of consumers. The flag here silences
        # warnings. For more details see:
        # https://doc.rust-lang.org/rustc/lints/levels.html
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.4.13",
    deps = [
    ] + select_with_or({
        "//conditions:default": [
            "//vendor_local_pkgs/crates/futures-core-0.3.21:futures_core",
            "//vendor_local_pkgs/crates/futures-util-0.3.21:futures_util",
            "//vendor_local_pkgs/crates/pin-project-1.0.11:pin_project",
            "//vendor_local_pkgs/crates/pin-project-lite-0.2.9:pin_project_lite",
            "//vendor_local_pkgs/crates/tokio-1.16.1:tokio",
            "//vendor_local_pkgs/crates/tokio-util-0.7.2:tokio_util",
            "//vendor_local_pkgs/crates/tower-layer-0.3.1:tower_layer",
            "//vendor_local_pkgs/crates/tower-service-0.3.2:tower_service",
            "//vendor_local_pkgs/crates/tracing-0.1.35:tracing",
        ],
    }),
)
