pub mod compression;
pub mod dictionary65k;
pub mod error;
pub mod three_word_encoder;
pub mod three_word_ipv6_encoder;
pub mod unified_three_word_encoder;
pub mod ipv6_compression;
pub mod ipv6_pattern_feistel;
pub mod ipv6_perfect_patterns;
pub mod pure_ip_compression;
pub mod three_word_adaptive_encoder;
pub mod universal_ip_compression;
#[cfg(test)]
mod property_tests;
pub use error::{FourWordError, Result};
pub use ipv6_compression::{CompressedIpv6, Ipv6Category, Ipv6Compressor};
pub use ipv6_pattern_feistel::{IPv6PatternFeistel, IPv6PatternId};
pub use ipv6_perfect_patterns::{IPv6Pattern, IPv6PatternDetector};
pub use pure_ip_compression::{MathematicalCompressor, PureIpCompressor};
pub use three_word_adaptive_encoder::ThreeWordAdaptiveEncoder;
pub use three_word_encoder::{ThreeWordEncoder, ThreeWordEncoding};
pub use three_word_ipv6_encoder::{
Ipv6ThreeWordGroupEncoding, ThreeWordGroup, ThreeWordIpv6Encoder,
};
pub use unified_three_word_encoder::{UnifiedThreeWordEncoder, UnifiedThreeWordEncoding};
pub use universal_ip_compression::UniversalIpCompressor;
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_basic_functionality() {
let encoder = ThreeWordAdaptiveEncoder::new().unwrap();
let address = "192.168.1.1:443";
let words = encoder.encode(address).unwrap();
let decoded = encoder.decode(&words).unwrap();
assert_eq!(address, decoded);
}
}