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

license {
    name: "external_rust_crates_bytes_license",
    visibility: [":__subpackages__"],
    license_kinds: ["SPDX-license-identifier-MIT"],
    license_text: ["LICENSE"],
}

rust_test {
    name: "bytes_test_src_lib",
    host_supported: true,
    crate_name: "bytes",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "src/lib.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_buf",
    host_supported: true,
    crate_name: "test_buf",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_buf.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_buf_mut",
    host_supported: true,
    crate_name: "test_buf_mut",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_buf_mut.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_bytes",
    host_supported: true,
    crate_name: "test_bytes",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_bytes.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_bytes_odd_alloc",
    host_supported: true,
    crate_name: "test_bytes_odd_alloc",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_bytes_odd_alloc.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_bytes_vec_alloc",
    host_supported: true,
    crate_name: "test_bytes_vec_alloc",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_bytes_vec_alloc.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_chain",
    host_supported: true,
    crate_name: "test_chain",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_chain.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_debug",
    host_supported: true,
    crate_name: "test_debug",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_debug.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_iter",
    host_supported: true,
    crate_name: "test_iter",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_iter.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_reader",
    host_supported: true,
    crate_name: "test_reader",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_reader.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_serde",
    host_supported: true,
    crate_name: "test_serde",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_serde.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_test {
    name: "bytes_test_tests_test_take",
    host_supported: true,
    crate_name: "test_take",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "tests/test_take.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: [
        "libbytes",
        "libserde",
        "libserde_test",
    ],
}

rust_library {
    name: "libbytes",
    host_supported: true,
    crate_name: "bytes",
    cargo_env_compat: true,
    cargo_pkg_version: "1.9.0",
    crate_root: "src/lib.rs",
    edition: "2018",
    features: [
        "default",
        "serde",
        "std",
    ],
    rustlibs: ["libserde"],
    apex_available: [
        "//apex_available:platform",
        "//apex_available:anyapex",
    ],
    product_available: true,
    vendor_available: true,
    min_sdk_version: "29",
}
