lib.rs 932 B

12345678910111213141516171819202122232425262728293031
  1. use base64::engine::general_purpose::URL_SAFE_NO_PAD;
  2. use base64::Engine;
  3. use flate2::write::DeflateEncoder;
  4. use flate2::Compression;
  5. use std::io::prelude::*;
  6. /// Compress string and encode in a URL safe form
  7. fn compress_string(s: &str) -> String {
  8. // Convert string to bytes
  9. let bytes = s.as_bytes();
  10. // Compress the bytes using deflate
  11. let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default());
  12. encoder.write_all(bytes).expect("Failed to write bytes");
  13. let compressed_bytes = encoder.finish().expect("Failed to compress bytes");
  14. // Encode the compressed bytes to base64
  15. URL_SAFE_NO_PAD.encode(compressed_bytes)
  16. }
  17. #[cfg(test)]
  18. mod tests {
  19. use super::*;
  20. #[test]
  21. fn it_works() {
  22. let input_str = "your_string_here";
  23. let compressed_str = compress_string(input_str);
  24. println!("Compressed and URL-safe encoded string: {}", compressed_str);
  25. }
  26. }