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

load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_library")

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

# licenses([
#     "TODO",  # MIT OR Apache-2.0
# ])

rust_library(
    name = "futures_util",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "alloc",
        "futures-io",
        "io",
        "memchr",
        "slab",
        "std",
    ],
    crate_root = "src/lib.rs",
    edition = "2018",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=futures-util",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.3.28",
    deps = [
        "//crates/vendor/futures-core-0.3.28:futures_core",
        "//crates/vendor/futures-io-0.3.28:futures_io",
        "//crates/vendor/futures-task-0.3.28:futures_task",
        "//crates/vendor/futures-util-0.3.28:build_script_build",
        "//crates/vendor/memchr-2.5.0:memchr",
        "//crates/vendor/pin-project-lite-0.2.12:pin_project_lite",
        "//crates/vendor/pin-utils-0.1.0:pin_utils",
        "//crates/vendor/slab-0.4.8:slab",
    ],
)

cargo_build_script(
    name = "futures-util_build_script",
    srcs = glob(["**/*.rs"]),
    crate_features = [
        "alloc",
        "futures-io",
        "io",
        "memchr",
        "slab",
        "std",
    ],
    crate_name = "build_script_build",
    crate_root = "build.rs",
    data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    edition = "2018",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "crate-name=futures-util",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.3.28",
    visibility = ["//visibility:private"],
)

alias(
    name = "build_script_build",
    actual = "futures-util_build_script",
    tags = ["manual"],
)
