###############################################################################
# @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 = "axum",
    srcs = glob(
        include = [
            "**/*.rs",
        ],
        exclude = [
        ],
    ),
    aliases = selects.with_or({
        "//conditions:default": {
        },
    }),
    compile_data = glob(
        include = [
            "**",
            "**/*.md",
        ],
        exclude = [
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ) + select_with_or({
        "//conditions:default": [
        ],
    }),
    crate_features = [
        "default",
        "http1",
        "json",
        "serde_json",
        "tower-log",
    ],
    crate_root = "src/lib.rs",
    data = select_with_or({
        "//conditions:default": [
        ],
    }),
    edition = "2018",
    proc_macro_deps = [
    ] + select_with_or({
        "//conditions:default": [
            "//vendor_local_pkgs/crates/async-trait-0.1.56:async_trait",
        ],
    }),
    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.8",
    deps = [
    ] + select_with_or({
        "//conditions:default": [
            "//vendor_local_pkgs/crates/axum-core-0.1.2:axum_core",
            "//vendor_local_pkgs/crates/bitflags-1.3.2:bitflags",
            "//vendor_local_pkgs/crates/bytes-1.2.0:bytes",
            "//vendor_local_pkgs/crates/futures-util-0.3.21:futures_util",
            "//vendor_local_pkgs/crates/http-0.2.8:http",
            "//vendor_local_pkgs/crates/http-body-0.4.5:http_body",
            "//vendor_local_pkgs/crates/hyper-0.14.20:hyper",
            "//vendor_local_pkgs/crates/matchit-0.4.6:matchit",
            "//vendor_local_pkgs/crates/memchr-2.5.0:memchr",
            "//vendor_local_pkgs/crates/mime-0.3.16:mime",
            "//vendor_local_pkgs/crates/percent-encoding-2.1.0:percent_encoding",
            "//vendor_local_pkgs/crates/pin-project-lite-0.2.9:pin_project_lite",
            "//vendor_local_pkgs/crates/serde-1.0.140:serde",
            "//vendor_local_pkgs/crates/serde_json-1.0.82:serde_json",
            "//vendor_local_pkgs/crates/serde_urlencoded-0.7.1:serde_urlencoded",
            "//vendor_local_pkgs/crates/sync_wrapper-0.1.1:sync_wrapper",
            "//vendor_local_pkgs/crates/tokio-1.16.1:tokio",
            "//vendor_local_pkgs/crates/tower-0.4.13:tower",
            "//vendor_local_pkgs/crates/tower-http-0.2.5:tower_http",
            "//vendor_local_pkgs/crates/tower-layer-0.3.1:tower_layer",
            "//vendor_local_pkgs/crates/tower-service-0.3.2:tower_service",
        ],
    }),
)
