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

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

exports_files(
    [
        "cargo-bazel.json",
        "defs.bzl",
        "crates.bzl",
    ] + glob([
        "*.bazel",
    ]),
)

filegroup(
    name = "srcs",
    srcs = glob([
        "*.bazel",
        "*.bzl",
    ]),
)

# Workspace Member Dependencies
alias(
    name = "anyhow",
    actual = "@rules_rust_rust_analyzer__anyhow-1.0.58//:anyhow",
    tags = ["manual"],
)

alias(
    name = "clap",
    actual = "@rules_rust_rust_analyzer__clap-3.2.12//:clap",
    tags = ["manual"],
)

alias(
    name = "env_logger",
    actual = "@rules_rust_rust_analyzer__env_logger-0.9.0//:env_logger",
    tags = ["manual"],
)

alias(
    name = "itertools",
    actual = "@rules_rust_rust_analyzer__itertools-0.10.3//:itertools",
    tags = ["manual"],
)

alias(
    name = "log",
    actual = "@rules_rust_rust_analyzer__log-0.4.17//:log",
    tags = ["manual"],
)

alias(
    name = "serde",
    actual = "@rules_rust_rust_analyzer__serde-1.0.139//:serde",
    tags = ["manual"],
)

alias(
    name = "serde_json",
    actual = "@rules_rust_rust_analyzer__serde_json-1.0.82//:serde_json",
    tags = ["manual"],
)

# Binaries
alias(
    name = "clap__stdio-fixture",
    actual = "@rules_rust_rust_analyzer__clap-3.2.12//:stdio-fixture__bin",
    tags = ["manual"],
)
