value_log/slice/
slice_default.rsuse byteview::ByteView;
#[derive(Debug, Clone, Eq, Hash, Ord)]
pub struct Slice(pub(super) ByteView);
impl Slice {
#[must_use]
pub fn new(bytes: &[u8]) -> Self {
Self(bytes.into())
}
#[doc(hidden)]
#[must_use]
pub fn empty() -> Self {
Self(ByteView::new(&[]))
}
#[doc(hidden)]
#[must_use]
pub fn slice(&self, range: impl std::ops::RangeBounds<usize>) -> Self {
Self(self.0.slice(range))
}
#[must_use]
#[doc(hidden)]
pub fn with_size(len: usize) -> Self {
Self(ByteView::with_size(len))
}
#[doc(hidden)]
pub fn from_reader<R: std::io::Read>(reader: &mut R, len: usize) -> std::io::Result<Self> {
let view = ByteView::from_reader(reader, len)?;
Ok(Self(view))
}
}
impl From<Vec<u8>> for Slice {
fn from(value: Vec<u8>) -> Self {
Self(ByteView::from(value))
}
}
impl From<String> for Slice {
fn from(value: String) -> Self {
Self(ByteView::from(value.into_bytes()))
}
}
impl From<ByteView> for Slice {
fn from(value: ByteView) -> Self {
Self(value)
}
}