#加密 #fse

final-state-rs

Rust中的最终状态压缩

1个不稳定版本

0.1.0 2023年2月13日

#452压缩

MIT 许可证

17KB
302 代码行

最终状态压缩

这是一个FSE算法的完整Rust实现。

该库不包含任何外部工具,如直方图计算、数据迭代器、从文件创建块或启发式优化。

在没有仔细检查的情况下,不应在生产中使用该库。这主要是用于研究带有一些算术的数据压缩的仓库。

然而,这些公共函数似乎工作正常

/// Symbol index contains the position for each symbol in the histogram.
/// You should care about your alphabet outside the function.
pub fn encode(
    hist: &mut [usize],
    symbol_index: &HashMap<u16, usize>,
    table_log: usize, // R
    src: &[u16],
) -> (usize, Vec<u32>, Vec<u8>)

/// Hist is a 255 sized slice containing the symbol's index itself
pub fn encode_u8(
    hist: &mut [usize],
    table_log: usize, // R
    src: &[u8],
) -> (usize, Vec<u32>, Vec<u8>);

pub fn decode(
    mut state: usize,
    mut bits: Vec<u32>,
    str: Vec<u8>,
    normalized_counter: &[usize],
    symbols: &[u16],
    table_log: usize,
) -> Vec<u16>;

pub fn decode_u8(
    mut state: usize,
    mut bits: Vec<u32>,
    str: Vec<u8>,
    normalized_counter: &[usize],
    table_log: usize,
) -> Vec<u8>;

许可证

由于FSE算法是公开的,FB实现也是如此,当前的Rust解释应该遵循MIT许可证。

依赖关系

~175KB