Skip to main content

Crate crush_core

Crate crush_core 

Source
Expand description

Crush Core Library

High-performance parallel compression library with pluggable compression algorithms.

§Overview

Crush provides a flexible plugin-based compression system with:

  • Pluggable algorithms: Add custom compression algorithms via the CompressionAlgorithm trait
  • Intelligent selection: Automatic plugin selection based on scoring weights
  • Timeout protection: Configurable timeouts prevent runaway compression operations
  • Zero-copy design: Minimal allocations and efficient memory usage

§Quick Start

use crush_core::{init_plugins, compress, decompress};

// Initialize plugin registry (call once at startup)
init_plugins().expect("Plugin initialization failed");

// Compress data
let data = b"Hello, Crush!";
let compressed = compress(data).expect("Compression failed");

// Decompress data
let decompressed = decompress(&compressed).expect("Decompression failed");
assert_eq!(data.as_slice(), decompressed.data.as_slice());

§Advanced Usage

§Custom Plugin Selection

use crush_core::{init_plugins, compress_with_options, CompressionOptions, ScoringWeights};
use std::time::Duration;

init_plugins().expect("Plugin initialization failed");

// Manual plugin override
let options = CompressionOptions::default()
    .with_plugin("deflate")
    .with_timeout(Duration::from_secs(10));
let compressed = compress_with_options(b"data", &options).expect("Compression failed");

// Automatic selection with custom weights
let weights = ScoringWeights {
    throughput: 0.8,        // Prioritize speed
    compression_ratio: 0.2, // Less emphasis on compression ratio
};
let options = CompressionOptions::default().with_weights(weights);
let compressed = compress_with_options(b"data", &options).expect("Compression failed");

§Plugin Discovery

use crush_core::{init_plugins, list_plugins};

init_plugins().expect("Plugin initialization failed");

// List all registered plugins
for plugin in list_plugins() {
    println!("Plugin: {} ({})", plugin.name, plugin.version);
    println!("  Throughput: {} MB/s", plugin.throughput);
    println!("  Compression ratio: {:.2}", plugin.compression_ratio);
}

Re-exports§

pub use cancel::AtomicCancellationToken;
pub use cancel::CancellationToken;
pub use cancel::ResourceTracker;
pub use compression::compress;
pub use compression::compress_with_options;
pub use compression::CompressionOptions;
pub use decompression::decompress;
pub use decompression::decompress_with_cancel;
pub use error::CrushError;
pub use error::PluginError;
pub use error::Result;
pub use error::TimeoutError;
pub use error::ValidationError;
pub use inspection::inspect;
pub use inspection::InspectResult;
pub use plugin::calculate_plugin_score;
pub use plugin::init_plugins;
pub use plugin::list_plugins;
pub use plugin::CompressionAlgorithm;
pub use plugin::CrushHeader;
pub use plugin::PluginMetadata;
pub use plugin::PluginSelector;
pub use plugin::ScoringWeights;
pub use plugin::COMPRESSION_ALGORITHMS;

Modules§

cancel
Cancellation support for compression operations
compression
Compression functionality
decompression
Decompression functionality
error
Error types for Crush compression library
inspection
plugin
Plugin system for Crush compression library