"""
@generated
cargo-raze crate build file.

DO NOT EDIT! Replaced on runs of cargo-raze
"""

# buildifier: disable=load
load("@bazel_skylib//lib:selects.bzl", "selects")

# buildifier: disable=load
load(
    "@rules_rust//rust:defs.bzl",
    "rust_binary",
    "rust_library",
    "rust_proc_macro",
    "rust_test",
)

package(default_visibility = [
    # Public for visibility by "@raze__crate__version//" targets.
    #
    # Prefer access through "//third_party/rust/cargo", which limits external
    # visibility to explicit Cargo.toml dependencies.
    "//visibility:public",
])

licenses([
    "notice",  # MIT from expression "MIT OR Apache-2.0"
])

# Generated Targets

# Unsupported target "header_map" with type "bench" omitted

# Unsupported target "header_name" with type "bench" omitted

# Unsupported target "header_name2" with type "bench" omitted

# Unsupported target "header_value" with type "bench" omitted

# Unsupported target "method" with type "bench" omitted

# Unsupported target "uri" with type "bench" omitted

rust_library(
    name = "http",
    srcs = glob(["**/*.rs"]),
    crate_root = "src/lib.rs",
    data = [],
    edition = "2018",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-raze",
        "crate-name=http",
        "manual",
    ],
    version = "0.2.8",
    # buildifier: leave-alone
    deps = [
        "@raze__bytes__1_3_0//:bytes",
        "@raze__fnv__1_0_7//:fnv",
        "@raze__itoa__1_0_5//:itoa",
    ],
)

# Unsupported target "header_map" with type "test" omitted

# Unsupported target "header_map_fuzz" with type "test" omitted

# Unsupported target "status_code" with type "test" omitted
