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 #[must_use]
34 #[doc(hidden)]
35 pub fn with_size(len: usize) -> Self {
36 Self(ByteView::with_size(len))
37 }
38
39 #[doc(hidden)]
41 pub fn from_reader<R: std::io::Read>(reader: &mut R, len: usize) -> std::io::Result<Self> {
42 let view = ByteView::from_reader(reader, len)?;
43 Ok(Self(view))
44 }
45}
46
47impl From<Vec<u8>> for Slice {
49 fn from(value: Vec<u8>) -> Self {
50 Self(ByteView::from(value))
51 }
52}
53
54impl From<String> for Slice {
56 fn from(value: String) -> Self {
57 Self(ByteView::from(value.into_bytes()))
58 }
59}
60
61impl From<ByteView> for Slice {
62 fn from(value: ByteView) -> Self {
63 Self(value)
64 }
65}
66
67impl From<Slice> for ByteView {
68 fn from(value: Slice) -> Self {
69 value.0
70 }
71}