Integração Nativa
Acesso ao sistema de arquivos, notificações e APIs do SO a partir de aplicativos desktop Rust - padrões portáteis e ressalvas de plataforma.
Busque em todas as páginas da documentação
Acesso ao sistema de arquivos, notificações e APIs do SO a partir de aplicativos desktop Rust - padrões portáteis e ressalvas de plataforma.
fn app_data_dir() -> std::io::Result<std::path::PathBuf> {
let base = dirs::data_local_dir().ok_or(std::io::ErrorKind::NotFound)?;
Ok(base.join("com.example.myapp"))
}Quando usar isso:
fn ensure_data_dir() -> std::io::Result<std::path::PathBuf> {
let dir = app_data_dir()?;
std::fs::create_dir_all(&dir)?;
Ok(dir)
}
fn app_data_dir() -> std::io::Result<std::path::PathBuf> {
let base = dirs::data_local_dir().ok_or(std::io::ErrorKind::NotFound)?;
Ok(base.join("com.example.myapp"))
}
fn pick_config_file() -> Option<std::path::PathBuf> {
rfd::FileDialog::new()
.add_filter("toml", &["toml"])
.pick_file()
}O que isso demonstra:
dirs| Necessidade | Crate / API |
|---|---|
| Caminho de dados do aplicativo | dirs, caminhos Tauri |
| Caixa de diálogo de arquivo | rfd, plugin de diálogo Tauri |
| Notificações | tauri-plugin-notification |
| Segredos | keyring |
/Users/... codificados - quebra Linux/Windows. Correção: sempre use dirs ou o resolvedor Tauri.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Apenas CLI | Ferramentas de servidor | UX de desktop necessária |
Electron @electron/remote | Aplicativo legado | Modelo de segurança Tauri/Rust |
| FFI específico da plataforma | Abstração ausente | Prioridade de aplicativo portátil |
| Apenas aplicativo web | Nenhuma API nativa | Necessita de sistema de arquivos offline |
Declare diretórios permitidos nas capacidades; use app_data_dir para a raiz gravável padrão.
Eventos de webview Tauri ou manipuladores de soltar winit em egui/iced brutos - valide caminhos antes de ler.
Abra URLs e pastas com o crate open ou o plugin de shell Tauri - nunca passe strings de usuário não sanitizadas para o shell.
tauri-plugin-single-instance ou bloqueio de arquivo na inicialização para aplicativos de bandeja do Windows.
Crate dark-light ou eventos de tema Tauri para sincronizar a UI com a configuração do SO.
Crates específicos da plataforma ou scripts de instalação - documente o impacto na privacidade para os usuários.
Flatpak/snap usam portais XDG para acesso a arquivos - teste compilações empacotadas, não apenas cargo run.
Gravar em Program Files falha - use %LOCALAPPDATA% via dirs.
Injete um mock de trait FileSystem; testes de integração usam diretórios tempfile.
Instaladores registram manipuladores MIME - veja Empacotamento e Distribuição.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4 e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026