value_log/slice/
slice_default.rs1use byteview::ByteView;
6
7#[derive(Debug, Clone, Eq, Hash, Ord)]
11pub struct Slice(pub(super) ByteView);
12
13impl Slice {
14 #[must_use]
16 pub fn new(bytes: &[u8]) -> Self {
17 Self(bytes.into())
18 }
19
20 #[doc(hidden)]
21 #[must_use]
22 pub fn empty() -> Self {
23 Self(ByteView::new(&[]))
24 }
25
26 #[doc(hidden)]
27 #[must_use]
28 pub fn slice(&self, range: impl std::ops::RangeBounds<usize>) -> Self {
29 Self(self.0.slice(range))
30 }
31
32 #[doc(hidden)]
33 #[must_use]
34 pub fn fused(left: &[u8], right: &[u8]) -> Self {
35 Self(ByteView::fused(left, right))
36 }
37
38 #[must_use]
40 #[doc(hidden)]
41 pub fn with_size(len: usize) -> Self {
42 Self(ByteView::with_size(len))
43 }
44
45 #[doc(hidden)]
47 pub fn from_reader<R: std::io::Read>(reader: &mut R, len: usize) -> std::io::Result<Self> {
48 let view = ByteView::from_reader(reader, len)?;
49 Ok(Self(view))
50 }
51}
52
53impl From<Vec<u8>> for Slice {
55 fn from(value: Vec<u8>) -> Self {
56 Self(ByteView::from(value))
57 }
58}
59
60impl From<String> for Slice {
62 fn from(value: String) -> Self {
63 Self(ByteView::from(value.into_bytes()))
64 }
65}
66
67impl From<ByteView> for Slice {
68 fn from(value: ByteView) -> Self {
69 Self(value)
70 }
71}
72
73impl From<Slice> for ByteView {
74 fn from(value: Slice) -> Self {
75 value.0
76 }
77}