casc-rs

Crates.iocasc-rs
lib.rscasc-rs
version0.1.8
created_at2025-07-10 17:57:57.582438+00
updated_at2025-10-08 21:31:04.885279+00
descriptionA Rust implementation of a Casc Storage Handler for Blizzard's CASC format.
homepagehttps://github.com/echo000/casc-rs
repositoryhttps://github.com/echo000/casc-rs
max_upload_size
id1746862
size72,355
echo000 (echo000)

documentation

https://docs.rs/casc-rs

README

casc-rs

A pure Rust implementation of a Casc Storage Handler, inspired by the version ported to C# from C++. This crate allows you to read and extract files from Blizzard's CASC storage format.

Note: This library currently only supports CASC storages that use the TVFS root file format.

Usage

Add to your Cargo.toml

[dependencies]
casc-rs = 0.1

Example: Listing and Extracting Files

use casc_rs::casc_storage::CascStorage;
use std::fs::File;
use std::io::Write;

fn main() {
    // Open a CASC storage directory (containing .build.info, Data/)
    let storage = CascStorage::open("path/to/casc/storage").unwrap();

    // List all files
    for file_info in &storage.files {
        println!("File: {} ({} bytes)", file_info.file_name(), file_info.file_size());
    }

    // Extract a file by name
    let file_name = "some/file/in/storage.txt";
    let mut casc_reader = storage.open_file(file_name).unwrap();
    let mut output = File::create("output.txt").unwrap();
    std::io::copy(&mut casc_reader, &mut output).unwrap();
}
Commit count: 0

cargo fmt