shared_bytes 0.1.0-beta.4

Owned string and byte slices.
Documentation
use std::{ops::Deref, sync::Arc};

pub(crate) trait SliceOwner {
    type Slice: ?Sized;

    fn as_slice(&self) -> &Self::Slice;
}

impl<Owner> SliceOwner for Arc<Owner>
where
    Owner: SliceOwner,
{
    type Slice = Owner::Slice;

    fn as_slice(&self) -> &Self::Slice {
        self.deref().as_slice()
    }
}

impl<T> SliceOwner for Vec<T> {
    type Slice = [T];
    fn as_slice(&self) -> &[T] {
        self
    }
}

impl SliceOwner for String {
    type Slice = str;
    fn as_slice(&self) -> &str {
        self
    }
}

impl<T> SliceOwner for [T] {
    type Slice = [T];
    fn as_slice(&self) -> &[T] {
        self
    }
}

impl SliceOwner for str {
    type Slice = str;
    fn as_slice(&self) -> &str {
        self
    }
}