unrar 0.5.8

list and extract RAR archives
Documentation
use unrar::Archive;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut archive =
        Archive::new("../archive.rar")
            .open_for_processing()
            .unwrap();
    while let Some(header) = archive.read_header()? {
        println!(
            "{} bytes: {}",
            header.entry().unpacked_size,
            header.entry().filename.to_string_lossy(),
        );
        archive = if header.entry().is_file() {
            header.extract()?
        } else {
            header.skip()?
        };
    }
    Ok(())
}