fsst-rust 0.1.1

FSST-Rust is a pure rust implementation of the Fast Static Symbol Table
Documentation
use fsst_rust::{decode_all_strings, encode_all_strings, read_string_lines};

fn main() {
    let compress_file_path = "assets/test_data/ps_comment".to_string();
    let strings = read_string_lines(compress_file_path).unwrap();

    let mut start_time = std::time::Instant::now();
    let (symbol_table, encodings) = encode_all_strings(&strings);
    let compress_time = start_time.elapsed();

    start_time = std::time::Instant::now();
    let decode_strings = decode_all_strings(&symbol_table, &encodings);
    let decompress_time = start_time.elapsed();

    let mut encoding_size = symbol_table.dump().len();
    let mut total_size = 0;
    for i in 0..strings.len() {
        total_size += strings[i].len();
        encoding_size += encodings[i].len();
        assert_eq!(strings[i], decode_strings[i]);
    }

    let compress_factor = total_size as f64 / encoding_size as f64;
    println!("compression factor: {:.4}", compress_factor);
    println!("compression cost time: {}ms", compress_time.as_millis());
    println!("decompression cost time: {}ms", decompress_time.as_millis());
}