1 unstable release
0.1.0 | Sep 16, 2023 |
---|
#376 in Multimedia
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.