Verificando se um diretório existe

Rust:
Verificando se um diretório existe

Como:

A biblioteca padrão do Rust (std) inclui funcionalidades para verificar a existência de um diretório por meio dos módulos std::path::Path e std::fs. Aqui está um exemplo simples usando a abordagem padrão do Rust:

use std::path::Path;

fn main() {
    let path = Path::new("/caminho/para/diretorio");
    if path.exists() && path.is_dir() {
        println!("O diretório existe.");
    } else {
        println!("O diretório não existe.");
    }
}

Saída de amostra, assumindo que o diretório existe:

O diretório existe.

Para cenários mais complexos ou funcionalidades aprimoradas (como operações assíncronas no sistema de arquivos), você pode considerar o uso de uma biblioteca de terceiros, como tokio, com seu módulo de fs assíncrono, especialmente se você está trabalhando dentro de um runtime assíncrono. Veja como você poderia alcançar o mesmo com tokio:

Primeiro, adicione tokio ao seu Cargo.toml:

[dependencies]
tokio = { version = "1.0", features = ["full"] }

Depois, use tokio::fs para verificar se um diretório existe de forma assíncrona:

use tokio::fs;

#[tokio::main]
async fn main() {
    let path = "/caminho/para/diretorio";
    match fs::metadata(path).await {
        Ok(metadata) => {
            if metadata.is_dir() {
                println!("O diretório existe.");
            } else {
                println!("O caminho existe mas não é um diretório.");
            }
        },
        Err(_) => println!("O diretório não existe."),
    }
}

Saída de amostra, assumindo que o diretório não existe:

O diretório não existe.

Esses exemplos destacam como Rust e seu ecossistema oferecem abordagens tanto síncronas quanto assíncronas para verificações de existência de diretórios, atendendo a uma ampla gama de necessidades de desenvolvimento de software.