// This file is generated by cargo_embargo.
// Do not modify this file because the changes will be overridden on upgrade.

package {
    default_applicable_licenses: ["external_rust_crates_crossbeam-deque_license"],
    default_team: "trendy_team_android_rust",
}

license {
    name: "external_rust_crates_crossbeam-deque_license",
    visibility: [":__subpackages__"],
    license_kinds: ["SPDX-license-identifier-Apache-2.0"],
    license_text: ["LICENSE"],
}

rust_test {
    name: "crossbeam-deque_test_tests_fifo",
    host_supported: true,
    crate_name: "fifo",
    cargo_env_compat: true,
    cargo_pkg_version: "0.8.6",
    crate_root: "tests/fifo.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2021",
    features: [
        "default",
        "std",
    ],
    rustlibs: [
        "libcrossbeam_deque",
        "libcrossbeam_epoch",
        "libcrossbeam_utils",
        "librand",
    ],
}

rust_test {
    name: "crossbeam-deque_test_tests_injector",
    host_supported: true,
    crate_name: "injector",
    cargo_env_compat: true,
    cargo_pkg_version: "0.8.6",
    crate_root: "tests/injector.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2021",
    features: [
        "default",
        "std",
    ],
    rustlibs: [
        "libcrossbeam_deque",
        "libcrossbeam_epoch",
        "libcrossbeam_utils",
        "librand",
    ],
}

rust_test {
    name: "crossbeam-deque_test_tests_lifo",
    host_supported: true,
    crate_name: "lifo",
    cargo_env_compat: true,
    cargo_pkg_version: "0.8.6",
    crate_root: "tests/lifo.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2021",
    features: [
        "default",
        "std",
    ],
    rustlibs: [
        "libcrossbeam_deque",
        "libcrossbeam_epoch",
        "libcrossbeam_utils",
        "librand",
    ],
}

rust_test {
    name: "crossbeam-deque_test_tests_steal",
    host_supported: true,
    crate_name: "steal",
    cargo_env_compat: true,
    cargo_pkg_version: "0.8.6",
    crate_root: "tests/steal.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2021",
    features: [
        "default",
        "std",
    ],
    rustlibs: [
        "libcrossbeam_deque",
        "libcrossbeam_epoch",
        "libcrossbeam_utils",
        "librand",
    ],
}

rust_library {
    name: "libcrossbeam_deque",
    host_supported: true,
    crate_name: "crossbeam_deque",
    cargo_env_compat: true,
    cargo_pkg_version: "0.8.6",
    crate_root: "src/lib.rs",
    edition: "2021",
    features: [
        "default",
        "std",
    ],
    rustlibs: [
        "libcrossbeam_epoch",
        "libcrossbeam_utils",
    ],
    apex_available: [
        "//apex_available:platform",
        "//apex_available:anyapex",
    ],
    product_available: true,
    vendor_available: true,
}
