async-tensorrt 0.9.1

Async TensorRT for Rust.
Documentation
fn search_for_path(
    base_env: &str,
    default_base: Option<&str>,
    include_env: &str,
    lib_env: &str,
) -> (std::path::PathBuf, std::path::PathBuf) {
    let base_path = if let Some(default_base) = default_base {
        std::env::var(base_env)
            .map(std::path::PathBuf::from)
            .unwrap_or_else(|_| std::path::PathBuf::from(default_base))
    } else {
        std::env::var(base_env)
            .map(std::path::PathBuf::from)
            .expect(&format!("Missing environment variable `{base_env}`."))
    };

    let include_path = std::env::var(include_env)
        .map(std::path::PathBuf::from)
        .unwrap_or_else(|_| base_path.join("include"));

    let lib_path = std::env::var(lib_env)
        .map(std::path::PathBuf::from)
        .unwrap_or_else(|_| {
            #[cfg(not(windows))]
            {
                base_path.join("lib64")
            }
            #[cfg(windows)]
            {
                base_path.join("lib").join("x64")
            }
        });

    (include_path, lib_path)
}

fn main() {
    #[cfg(not(windows))]
    let (cuda_include_path, cuda_lib_path) = search_for_path(
        "CUDA_PATH",
        Some("/usr/local/cuda"),
        "CUDA_INCLUDE_PATH",
        "CUDA_LIB_PATH",
    );

    #[cfg(windows)]
    let (cuda_include_path, cuda_lib_path) =
        search_for_path("CUDA_PATH", None, "CUDA_INCLUDE_PATH", "CUDA_LIB_PATH");

    #[cfg(not(windows))]
    let (tensorrt_include_path, tensorrt_lib_path) = search_for_path(
        "TENSORRT_PATH",
        Some("/usr/local/tensorrt"),
        "TENSORRT_INCLUDE_PATH",
        "TENSORRT_LIB_PATH",
    );

    #[cfg(windows)]
    let (tensorrt_include_path, tensorrt_lib_path) = search_for_path(
        "TENSORRT_PATH",
        None,
        "TENSORRT_INCLUDE_PATH",
        "TENSORRT_LIB_PATH",
    );

    let mut cpp_build_config = cpp_build::Config::new();
    cpp_build_config.include(cuda_include_path);
    cpp_build_config.include(tensorrt_include_path);
    cpp_build_config.build("src/lib.rs");

    println!("cargo:rustc-link-search={}", cuda_lib_path.display());
    println!("cargo:rustc-link-search={}", tensorrt_lib_path.display());

    println!("cargo:rustc-link-lib=nvinfer");
    println!("cargo:rustc-link-lib=nvonnxparser");
}