prs_rs/
lib.rs

1#![no_std]
2#![feature(allocator_api)]
3
4extern crate alloc;
5#[cfg(feature = "std")]
6extern crate std;
7
8pub mod comp;
9pub mod decomp;
10pub mod util;
11
12#[cfg(test)]
13pub mod test_prelude;
14
15#[cfg(feature = "c-exports")]
16pub mod exports;
17
18pub mod impls {
19    pub mod comp {
20        pub mod comp_dict;
21        pub mod compress;
22        pub mod lz77_matcher;
23    }
24
25    pub mod decomp {
26        pub(crate) mod common;
27        pub mod decompress;
28        pub mod estimate;
29    }
30}
31
32pub trait ReadOnlyPointerSrc {
33    fn as_ptr(&self) -> *const u8;
34}
35
36impl ReadOnlyPointerSrc for &[u8] {
37    fn as_ptr(&self) -> *const u8 {
38        (*self).as_ptr()
39    }
40}
41
42impl ReadOnlyPointerSrc for *const u8 {
43    fn as_ptr(&self) -> *const u8 {
44        *self
45    }
46}
47
48pub trait MutablePointerSrc {
49    fn as_mut_ptr(&mut self) -> *mut u8;
50}
51
52impl MutablePointerSrc for &mut [u8] {
53    fn as_mut_ptr(&mut self) -> *mut u8 {
54        (*self).as_mut_ptr()
55    }
56}
57
58impl MutablePointerSrc for *mut u8 {
59    fn as_mut_ptr(&mut self) -> *mut u8 {
60        *self
61    }
62}