1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use crate::ffi;
pub fn compress_data(data: &[u8]) -> Result<&'static [u8], String> {
let mut out_length: i32 = 0;
let buffer = {
unsafe { ffi::CompressData(data.as_ptr() as *mut _, data.len() as i32, &mut out_length) }
};
if buffer.is_null() {
return Err("could not compress data".to_string());
}
let buffer = unsafe { std::slice::from_raw_parts(buffer, out_length as usize) };
return Ok(buffer);
}
pub fn decompress_data(data: &[u8]) -> Result<&'static [u8], String> {
let mut out_length: i32 = 0;
let buffer = {
unsafe { ffi::DecompressData(data.as_ptr() as *mut _, data.len() as i32, &mut out_length) }
};
if buffer.is_null() {
return Err("could not compress data".to_string());
}
let buffer = unsafe { std::slice::from_raw_parts(buffer, out_length as usize) };
return Ok(buffer);
}