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

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_http",
    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 = [
        "default",
        "map-response-body",
        "tower",
        "trace",
        "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.2.5",
    deps = [
    ] + select_with_or({
        "//conditions:default": [
            "@crates_vendor_pkgs__bitflags-1.3.2//:bitflags",
            "@crates_vendor_pkgs__bytes-1.1.0//:bytes",
            "@crates_vendor_pkgs__futures-core-0.3.21//:futures_core",
            "@crates_vendor_pkgs__futures-util-0.3.21//:futures_util",
            "@crates_vendor_pkgs__http-0.2.8//:http",
            "@crates_vendor_pkgs__http-body-0.4.5//:http_body",
            "@crates_vendor_pkgs__http-range-header-0.3.0//:http_range_header",
            "@crates_vendor_pkgs__pin-project-lite-0.2.9//:pin_project_lite",
            "@crates_vendor_pkgs__tower-0.4.13//:tower",
            "@crates_vendor_pkgs__tower-layer-0.3.1//:tower_layer",
            "@crates_vendor_pkgs__tower-service-0.3.2//:tower_service",
            "@crates_vendor_pkgs__tracing-0.1.35//:tracing",
        ],
    }),
)
