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

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/Apache-2.0
# ])

rust_library(
    name = "num_bigint_dig",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "default",
        "i128",
        "prime",
        "rand",
        "serde",
        "std",
        "u64_digit",
        "zeroize",
    ],
    crate_root = "src/lib.rs",
    edition = "2015",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=num-bigint-dig",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.7.0",
    deps = [
        "@crate_index__byteorder-1.4.3//:byteorder",
        "@crate_index__lazy_static-1.4.0//:lazy_static",
        "@crate_index__libm-0.2.6//:libm",
        "@crate_index__num-bigint-dig-0.7.0//:build_script_build",
        "@crate_index__num-integer-0.1.45//:num_integer",
        "@crate_index__num-iter-0.1.43//:num_iter",
        "@crate_index__num-traits-0.2.15//:num_traits",
        "@crate_index__rand-0.8.5//:rand",
        "@crate_index__serde-1.0.152//:serde",
        "@crate_index__smallvec-1.10.0//:smallvec",
        "@crate_index__zeroize-1.4.3//:zeroize",
    ],
)

cargo_build_script(
    name = "num-bigint-dig_build_script",
    srcs = glob(["**/*.rs"]),
    crate_features = [
        "default",
        "i128",
        "prime",
        "rand",
        "serde",
        "std",
        "u64_digit",
        "zeroize",
    ],
    crate_name = "build_script_build",
    crate_root = "build.rs",
    data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    edition = "2015",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "crate-name=num-bigint-dig",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.7.0",
    visibility = ["//visibility:private"],
    deps = [
        "@crate_index__autocfg-0.1.8//:autocfg",
    ],
)

alias(
    name = "build_script_build",
    actual = "num-bigint-dig_build_script",
    tags = ["manual"],
)
