* [x] `DownloadManager` manages queue, workers, config, and global state * [x] `DownloadTask` with URL, destination path, state, progress, and retries * [x] Thread-safe queue (e.g. [`crossbeam`](https://docs.rs/crossbeam/latest/crossbeam/),[`tokio::sync`](https://docs.rs/tokio/latest/tokio/sync/index.html)) * [ ] Configurable workers, auto or manual start * [x] Parallel downloads respecting max workers via semaphore or bounded channel * [ ] Add one or more URLs with optional custom path for dstination * [x] Track progress: bytes downloaded, total, speed, ETA (clients must be able to subscribe to live updates) * [x] Retry on failure with basic backoff * [x] Cancel single task or all tasks * [ ] Temp file handling and atomic move on completion * [ ] Export/import queue state for crash recovery * [x] Support event/callback hooks on task state changes * [ ] Allow injecting custom download backends (HTTP client abstraction) * [ ] (bonus) Might be useful to expose clean API for external crates (this might be a dedicated library, actually)
DownloadManagermanages queue, workers, config, and global stateDownloadTaskwith URL, destination path, state, progress, and retriescrossbeam,tokio::sync)