fastalp 0.1.6

High-performance lossless floating-point compression in pure Rust / 基于 ALP 算法的高性能无损浮点数压缩库
Documentation
pub mod bitpack;
pub mod constants;
pub mod decoder;
pub mod encoder;
pub mod error;
pub mod sampler;

pub use constants::AlpFloat;
pub use decoder::{decompress_f32_into, decompress_f64_into, decompress_into};
pub use encoder::{compress_f32_into, compress_f64_into, compress_into};
pub use error::{Error, Result};

/// 通用压缩浮点数切片
#[inline]
pub fn compress<F: AlpFloat>(data: &[F]) -> Vec<u8> {
  let mut dst = Vec::with_capacity(data.len() * 2 + 16);
  compress_into(data, &mut dst);
  dst
}

/// 通用解压浮点数切片
#[inline]
pub fn decompress<F: AlpFloat>(src: &[u8]) -> Result<Vec<F>> {
  let mut dst = Vec::new();
  decompress_into(src, &mut dst)?;
  Ok(dst)
}

/// 压缩 f64 浮点数切片
#[inline]
pub fn compress_f64(data: &[f64]) -> Vec<u8> {
  compress(data)
}

/// 解压 f64 浮点数切片
#[inline]
pub fn decompress_f64(src: &[u8]) -> Result<Vec<f64>> {
  decompress(src)
}

/// 压缩 f32 浮点数切片
#[inline]
pub fn compress_f32(data: &[f32]) -> Vec<u8> {
  compress(data)
}

/// 解压 f32 浮点数切片
#[inline]
pub fn decompress_f32(src: &[u8]) -> Result<Vec<f32>> {
  decompress(src)
}