#huffman #huffman-coding #decoding #encoding #codec #rust

huffmanrs

Huffmanrs est une bibliothèque Rust permettant d'encoder et de décoder du texte en utilisant le codage de Huffman

1 unstable release

0.1.0 Sep 16, 2023

#286 in Multimedia

MIT license

24KB
210 lines

Huffmanrs

Huffmanrs est une bibliothèque Rust permettant d'encoder et de décoder du texte en utilisant le codage de Huffman.

Fonctionnalités

  • Encode du texte.
  • Décode du code.

Installation

Pour utiliser Huffmanrs dans votre projet, ajoutez la dépendance suivante à votre fichier Cargo.toml :

[dependencies]
huffmanrs = "0.1.0"

Example

use huffmanrs::{HuffmanNode, Huffman};

fn main() { 
    // Créer une instance de huffman
    let mut huffman = Huffman::new();
    // Demande un texte en entré pour calculer les fréquences et construire l'arbre d'encodage
    huffman.build("hello");
    // Exemple d'encodage
    dbg!(huffman.encode("abbccc")); // encode le mot abbccc en 101111000
    // Exemple de décodage
    dbg!(huffman.decode("101111000")); // decode le code 101111000 en abbccc

    // L'API de Huffman est disponible via Huffman::, vous pouvez donc construire votre propre implémentation de Huffman et réutiliser les composants qui vous intéressent, tels que Huffman::build_huffman_tree etc.
}

Pour plus d'exemple d'utilisation, vous pouvez lire en détail la documentation et les tests.

Attention !!!!!!!!

Huffman::build_frequency_table n'attribue aucune priorité aux motifs, donc si plusieurs motifs ont la même fréquence, comme le "h", "e" et "o" dans "hello", l'exécution successive de ce code ne devrait pas vous donner le même encodage.

use huffmanrs::{HuffmanNode, Huffman};

fn main() { 
    // Créer une instance de huffman
    let mut huffman = Huffman::new();
    // Demande un texte en entré pour construire l'arbre de fréquence
    huffman.build("hello");
    // Exemple d'encodage
    dbg!(huffman.encode("hello")); // sortie possible :1001111100, 1000111101, 0010111101 etc.

    // Si ce comportement ne vous satisfait pas, vous pouvez réimplémenter Huffman::build_huffman_tree.
}

Dans ce genre de cas, il est essentiel pour le décodage d'avoir accès à la table de fréquence ou à l'arbre qui a été généré.

Contributions

Les contributions sont les bienvenues ! Si vous souhaitez améliorer ou ajouter des fonctionnalités à Huffmanrs, veuillez ouvrir une pull request sur GitHub.

License

Ce projet est sous licence MIT. Veuillez consulter le fichier LICENSE pour plus d'informations.

No runtime deps