async fn local_product_dir(version: &str, product_bundle_name: &str) -> Result<PathBuf> {
    let mut path = local_metadata_dir(version).await?;
    if product_bundle_name.contains("/") {
        // The product_bundle_name is used in a path. A leading slash will start
        // the path at root and nested slashes could allow "../".
        bail!(
            "Slash in {:?}. The product bundle name must not contain a slash character.",
            product_bundle_name
        );
    }
    path.push(product_bundle_name);
    Ok(path)
}
/// Determine the path to the product data.
Determine the path to the product data.
Determine the path to the product data .
async fn local_product_dir(version: &str, product_bundle_name: &str) -> Result<PathBuf> {
    let mut path = local_metadata_dir(version).await?;
    if product_bundle_name.contains("/") {
        // The product_bundle_name is used in a path. A leading slash will start
        // the path at root and nested slashes could allow "../".
        bail!(
            "Slash in {:?}. The product bundle name must not contain a slash character.",
            product_bundle_name
        );
    }
    path.push(product_bundle_name);
    Ok(path)
}
async fn local_product_dir ( version : & str , product_bundle_name : & str ) -> Result < PathBuf > { let mut path = local_metadata_dir ( version ) . await ? ; if product_bundle_name . contains ( " " ) { // The product_bundle_name is used in a path. A leading slash will start // the path at root and nested slashes could allow "../". bail ! ( " " product_bundle_name ) ; } path . push ( product_bundle_name ) ; Ok ( path ) }
Determine the path to the product data.
Determine the path to the product data .
version
&str
product_bundle_name
&str
version
&str
product_bundle_name
&str