// 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_ryu_license"],
    default_team: "trendy_team_android_rust",
}

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

rust_library {
    name: "libryu",
    host_supported: true,
    crate_name: "ryu",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "src/lib.rs",
    edition: "2018",
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
    product_available: true,
    vendor_available: true,
}

rust_test {
    name: "ryu_test_tests_common_test",
    host_supported: true,
    crate_name: "common_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/common_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}

rust_test {
    name: "ryu_test_tests_d2s_intrinsics_test",
    host_supported: true,
    crate_name: "d2s_intrinsics_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/d2s_intrinsics_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}

rust_test {
    name: "ryu_test_tests_d2s_table_test",
    host_supported: true,
    crate_name: "d2s_table_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/d2s_table_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}

rust_test {
    name: "ryu_test_tests_d2s_test",
    host_supported: true,
    crate_name: "d2s_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/d2s_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}

rust_test {
    name: "ryu_test_tests_f2s_test",
    host_supported: true,
    crate_name: "f2s_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/f2s_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}

rust_test {
    name: "ryu_test_tests_s2d_test",
    host_supported: true,
    crate_name: "s2d_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/s2d_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}

rust_test {
    name: "ryu_test_tests_s2f_test",
    host_supported: true,
    crate_name: "s2f_test",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.16",
    crate_root: "tests/s2f_test.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    rustlibs: [
        "libnum_cpus",
        "librand",
        "librand_xorshift",
        "libryu",
    ],
}
