Usando o KGet como uma Crate (Biblioteca)
O KGet é um motor de download de alta performance para Rust. Ele oferece recursos avançados como divisão em chunks paralelos, I/O em stream e proteção da integridade do disco (Escritas Bufferizadas), tudo encapsulado em uma API amigável para o desenvolvedor.
| English | Português | Español |
Instalação
Adicione o KGet ao seu Cargo.toml:
Sem GUI (recomendado para servidores/CI/builds mínimos):
[dependencies]
kget = "1.5.2"
Com GUI ativada (isso puxa dependências opcionais de GUI):
[dependencies]
kget = { version = "1.5.2", features = ["gui"] }
Componentes Principais
A biblioteca expõe os seguintes blocos fundamentais:
download: Função padrão para transferências de fluxo único (HTTP/HTTPS/FTP/SFTP).AdvancedDownloader: Uma struct para downloads paralelos multi-thread com otimização automática de RAM/Disco.DownloadOptions: Controla o comportamento da biblioteca (Modo silencioso, Caminho de saída, Verificação de ISO).create_progress_bar: Fábrica para criar barras de progresso no estilo KGet (verde, fluida, com ETA).verify_iso_integrity: Utilitário independente para cálculo de checksum SHA256.Config/Optimizer: Gerenciamento completo de configurações.
Guia Prático (Cookbook)
A melhor forma de aprender é consultando nosso exemplo completo no Livro de receitas.
Exemplo: Integração Simples
use kget::{download, DownloadOptions, Config, Optimizer};
fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let config = Config::default();
let options = DownloadOptions {
output_path: Some("arquivo_customizado.zip".into()),
verify_iso: false,
quiet_mode: false,
};
// Chamada simples de uma linha para o motor
download("https://example.com/file.zip", config.proxy, Optimizer::new(config.optimization), options)?;
Ok(())
}
Comportamento: Biblioteca vs CLI
Para garantir que o KGet funcione perfeitamente como uma biblioteca, seguimos estas regras:
- Sem Prompts de Stdin: As funções da biblioteca nunca usam
stdin. Elas não pausarão seu programa para fazer perguntas. - Controle Programático: Use
DownloadOptions { verify_iso: true }para forçar a verificação, oufalsepara ignorá-la. - Otimizado por Padrão: Mesmo como lib, o KGet usa
BufWriterde 2MB por thread e streaming de 16KB para garantir que o sistema hospedeiro continue responsivo e o uso de RAM seja baixo (~30MB).
Protocolos Suportados
- HTTP/HTTPS
- FTP
- SFTP
- Links Magnet (torrents, requer
transmission-daemon)
Mais
Veja docs.rs/kget para a documentação completa da API.
KGet é construído com ❤️ em Rust para velocidade e confiabilidade.