###############################################################################
# @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//rust:defs.bzl", "rust_library")

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

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

rust_library(
    name = "iana_time_zone",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "fallback",
    ],
    crate_root = "src/lib.rs",
    edition = "2018",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=iana-time-zone",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.1.53",
    deps = select({
        "@rules_rust//rust/platform:aarch64-apple-darwin": [
            "@crate_index__core-foundation-sys-0.8.3//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
        ],
        "@rules_rust//rust/platform:aarch64-apple-ios": [
            "@crate_index__core-foundation-sys-0.8.3//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
        ],
        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
            "@crate_index__core-foundation-sys-0.8.3//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
        ],
        "@rules_rust//rust/platform:aarch64-linux-android": [
            "@crate_index__android_system_properties-0.1.5//:android_system_properties",  # cfg(target_os = "android")
        ],
        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
            "@crate_index__winapi-0.3.9//:winapi",  # cfg(target_os = "windows")
        ],
        "@rules_rust//rust/platform:armv7-linux-androideabi": [
            "@crate_index__android_system_properties-0.1.5//:android_system_properties",  # cfg(target_os = "android")
        ],
        "@rules_rust//rust/platform:i686-apple-darwin": [
            "@crate_index__core-foundation-sys-0.8.3//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
        ],
        "@rules_rust//rust/platform:i686-linux-android": [
            "@crate_index__android_system_properties-0.1.5//:android_system_properties",  # cfg(target_os = "android")
        ],
        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
            "@crate_index__winapi-0.3.9//:winapi",  # cfg(target_os = "windows")
        ],
        "@rules_rust//rust/platform:wasm32-unknown-unknown": [
            "@crate_index__js-sys-0.3.61//:js_sys",  # cfg(target_arch = "wasm32")
            "@crate_index__wasm-bindgen-0.2.84//:wasm_bindgen",  # cfg(target_arch = "wasm32")
        ],
        "@rules_rust//rust/platform:wasm32-wasi": [
            "@crate_index__js-sys-0.3.61//:js_sys",  # cfg(target_arch = "wasm32")
            "@crate_index__wasm-bindgen-0.2.84//:wasm_bindgen",  # cfg(target_arch = "wasm32")
        ],
        "@rules_rust//rust/platform:x86_64-apple-darwin": [
            "@crate_index__core-foundation-sys-0.8.3//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
        ],
        "@rules_rust//rust/platform:x86_64-apple-ios": [
            "@crate_index__core-foundation-sys-0.8.3//:core_foundation_sys",  # cfg(any(target_os = "macos", target_os = "ios"))
        ],
        "@rules_rust//rust/platform:x86_64-linux-android": [
            "@crate_index__android_system_properties-0.1.5//:android_system_properties",  # cfg(target_os = "android")
        ],
        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
            "@crate_index__winapi-0.3.9//:winapi",  # cfg(target_os = "windows")
        ],
        "//conditions:default": [],
    }),
)
