use crate::buffer::{
pool::{Span, owners},
storage,
};
pub(in crate::buffer::pool) unsafe fn into_shared<K: crate::buffer::raw::Backing, M, S>(
span: Span<K, M, S>,
start: usize,
len: usize,
) -> storage::Shared<owners::Edge<K, M>> {
use std::ptr;
if len == 0 {
return storage::Shared::empty(owners::Edge::NONE);
}
let data = unsafe { span.entry().data().add(start) };
let data = unsafe { ptr::NonNull::new_unchecked(data) };
let edge = span.into_edge();
unsafe { storage::Shared::from_raw(data, len, edge) }
}