Библиотека арифметического кодирования на чистом Rust для эффективного сжатия текстовых данных. Демонстрирует продвинутые возможности Rust в алгоритмическом программировании и эффективной обработке данных! 🦀
- 🎯 Арифметическое кодирование - близкое к оптимальному энтропийное сжатие
- 📚 Оптимизация словаря слов - интеллектуальное обнаружение и замена частых слов
- 🎭 Высокие коэффициенты сжатия - до 40%+ на текстовых данных с идеальным восстановлением
- 🛡️ Безопасность памяти - без переполнений буфера и утечек памяти
- ✨ Типобезопасность - строгая типизация предотвращает ошибки алгоритма
- 🚀 Нулевые зависимости - использует только стандартную библиотеку Rust
- ⚡ Оптимизированная производительность - абстракции нулевой стоимости
- Владение и заимствование (
&[u8]без копирования) - Коллекции (
HashMap,Vec) и итераторы - Обработка ошибок (
Option,Result) - Сопоставление с образцом и система трейтов
- Модульная архитектура и документация
git clone https://github.com/arktusprime/arithmetic_compression_wizard
cd arithmetic_compression_wizard
cargo build
cargo testuse arithmetic_compression_wizard::simple_api::{compress_data, decompress_data};
fn main() {
let original = b"Привет, мир! Это тест магии сжатия!";
let compressed = compress_data(original);
let restored = decompress_data(compressed);
assert_eq!(original.as_slice(), restored.as_slice());
println!("Сжатие завершено! ✨");
}use arithmetic_compression_wizard::prelude::*;
fn main() {
let data = b"быстрая коричневая лиса прыгает через ленивую собаку";
let artifact = weave_compression_spell(data);
println!("📊 Исходный размер: {} байт", data.len());
println!("📦 Сжатый размер: {} байт", artifact.compressed_bit_stream.len());
println!("📖 Словарь слов: {} записей", artifact.mystical_word_grimoire.len());
let restored = unweave_compression_spell(artifact);
assert_eq!(data.as_slice(), restored.as_slice());
}Арифметическое кодирование представляет сообщение как число в интервале [0, 1), где каждый символ сужает интервал на основе его вероятности. Это обеспечивает сжатие, близкое к теоретическому пределу энтропии Шеннона.
Оптимизация словаря анализирует текст для поиска часто встречающихся слов (>3 вхождений), которые заменяются короткими токенами для дополнительного сжатия.
src/
├── lib.rs # Публичный API библиотеки
├── main.rs # Демонстрационное приложение
├── bit_wizardry/ # Низкоуровневая манипуляция битами
├── compression_engine/ # Алгоритмы сжатия
└── decompression_oracle/ # Алгоритмы распаковки
# Запуск тестов
cargo test
# Демонстрационное приложение
cargo run --bin compression-demo
# Примеры использования
cargo run --example quick_start
cargo run --example basic_compression_demo| Тип данных | Коэффициент сжатия | Скорость |
|---|---|---|
| "Гамлет" Шекспира (190KB) | 43.13% | ~50MB/s |
| Обычный текст | 35-45% | ~60MB/s |
| Повторяющиеся данные | 70%+ | ~80MB/s |
Проект идеален для изучения:
- Системного программирования на Rust - безопасная работа с памятью и битами
- Алгоритмов сжатия - полная реализация арифметического кодирования
- Архитектуры кода - модульный дизайн и документирование
- Продвинутых возможностей Rust - владение, трейты, обобщения, итераторы
cargo build --release # Релизная сборка
cargo doc --open # Генерация документации
cargo clippy # Линтинг
cargo fmt # ФорматированиеMIT License
Сделано с 🦀 Rust и ✨ магией сжатия!
Репозиторий: https://github.com/arktusprime/arithmetic_compression_wizard