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.