Struct flatcontainer::impls::slice_copy::OwnedRegion
source · pub struct OwnedRegion<T> { /* private fields */ }
Expand description
A container for owned types.
The container can absorb any type, and stores an owned version of the type, similarly to what
vectors do. We recommend using this container for copy types, but there is no restriction in
the implementation, and in fact it can correctly store owned values, although any data owned
by T
is regular heap-allocated data, and not contained in regions.
§Examples
use flatcontainer::{Push, OwnedRegion, Region};
let mut r = <OwnedRegion<_>>::default();
let panagram_en = "The quick fox jumps over the lazy dog";
let panagram_de = "Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich";
let en_index = r.push(panagram_en.as_bytes());
let de_index = r.push(panagram_de.as_bytes());
assert_eq!(panagram_de.as_bytes(), r.index(de_index));
assert_eq!(panagram_en.as_bytes(), r.index(en_index));
Trait Implementations§
source§impl<T: Clone> Clone for OwnedRegion<T>
impl<T: Clone> Clone for OwnedRegion<T>
source§impl<T: Debug> Debug for OwnedRegion<T>
impl<T: Debug> Debug for OwnedRegion<T>
source§impl<T> Default for OwnedRegion<T>
impl<T> Default for OwnedRegion<T>
source§impl<'de, T> Deserialize<'de> for OwnedRegion<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for OwnedRegion<T>where
T: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<T: Clone, I: IntoIterator<Item = T>> Push<CopyIter<I>> for OwnedRegion<T>
impl<T: Clone, I: IntoIterator<Item = T>> Push<CopyIter<I>> for OwnedRegion<T>
source§impl<T> Push<Vec<T>> for OwnedRegion<T>
impl<T> Push<Vec<T>> for OwnedRegion<T>
source§impl<T> Region for OwnedRegion<T>
impl<T> Region for OwnedRegion<T>
§type Index = (usize, usize)
type Index = (usize, usize)
The type to index into the container. Should be treated
as an opaque type, even if known.
source§fn merge_regions<'a>(regions: impl Iterator<Item = &'a Self> + Clone) -> Selfwhere
Self: 'a,
fn merge_regions<'a>(regions: impl Iterator<Item = &'a Self> + Clone) -> Selfwhere
Self: 'a,
Construct a region that can absorb the contents of
regions
in the future.source§fn index(&self, (start, end): Self::Index) -> Self::ReadItem<'_>
fn index(&self, (start, end): Self::Index) -> Self::ReadItem<'_>
Index into the container. The index must be obtained by
pushing data into the container.
source§fn reserve_regions<'a, I>(&mut self, regions: I)
fn reserve_regions<'a, I>(&mut self, regions: I)
Ensure that the region can absorb the items of
regions
without reallocationsource§impl<'b, T> ReserveItems<&'b [T]> for OwnedRegion<T>
impl<'b, T> ReserveItems<&'b [T]> for OwnedRegion<T>
source§impl<'b, T: Clone, const N: usize> ReserveItems<&'b [T; N]> for OwnedRegion<T>
impl<'b, T: Clone, const N: usize> ReserveItems<&'b [T; N]> for OwnedRegion<T>
source§impl<'a, T> ReserveItems<&'a Vec<T>> for OwnedRegion<T>
impl<'a, T> ReserveItems<&'a Vec<T>> for OwnedRegion<T>
source§impl<T, J: IntoIterator<Item = T>> ReserveItems<CopyIter<J>> for OwnedRegion<T>
impl<T, J: IntoIterator<Item = T>> ReserveItems<CopyIter<J>> for OwnedRegion<T>
Auto Trait Implementations§
impl<T> Freeze for OwnedRegion<T>
impl<T> RefUnwindSafe for OwnedRegion<T>where
T: RefUnwindSafe,
impl<T> Send for OwnedRegion<T>where
T: Send,
impl<T> Sync for OwnedRegion<T>where
T: Sync,
impl<T> Unpin for OwnedRegion<T>where
T: Unpin,
impl<T> UnwindSafe for OwnedRegion<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)