###############################################################################
# @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_std
###############################################################################

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

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

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

rust_library(
    name = "futures_test",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "default",
        "std",
    ],
    crate_root = "src/lib.rs",
    edition = "2018",
    proc_macro_deps = [
        "//crates_std/vendor/futures-macro-0.3.28:futures_macro",
    ],
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=futures-test",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.3.28",
    deps = [
        "//crates_std/vendor/futures-core-0.3.28:futures_core",
        "//crates_std/vendor/futures-executor-0.3.28:futures_executor",
        "//crates_std/vendor/futures-io-0.3.28:futures_io",
        "//crates_std/vendor/futures-sink-0.3.28:futures_sink",
        "//crates_std/vendor/futures-task-0.3.28:futures_task",
        "//crates_std/vendor/futures-util-0.3.28:futures_util",
        "//crates_std/vendor/pin-project-1.1.3:pin_project",
        "//crates_std/vendor/pin-utils-0.1.0:pin_utils",
    ],
)
