1use std::sync::Arc;
4
5pub use crate::handle::{BaseHandle, Handle, RefHandle};
6
7pub mod buffer;
8pub mod handle;
9pub mod slice;
10
11pub type ArcHandle<B, T> = BaseHandle<Arc<B>, T>;
13
14impl<B: AsRef<[u8]>> ArcHandle<B, ()> {
15 pub fn new_arc(inner: B) -> Self {
17 Self::new(Arc::new(inner))
18 }
19}
20
21impl<B: AsRef<[u8]>, T: Copy> ArcHandle<B, T> {
22 pub fn as_bytes_handle(&self) -> Handle<T> {
26 BaseHandle {
27 mem: self.mem.as_ref().as_ref(),
28 raw: self.raw,
29 }
30 }
31}
32
33pub type SliceHandle<'a, T> = RefHandle<'a, [T]>;
35
36pub type SliceIterHandle<'a, T> = Handle<'a, std::slice::Iter<'a, T>>;