Struct scratchpad::MarkerFront [−][src]
pub struct MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking, { /* fields omitted */ }
Scratchpad
marker for allocations from the front of the allocation
buffer.
A MarkerFront
is created when calling the mark_front()
method on a
Scratchpad
instance. Object allocations can only be made from the most
recently created MarkerFront
or MarkerBack
that is still active.
Markers are statically bound to the lifetime of the Scratchpad
from
which they are created, ensuring that no dangling references are left when
the Scratchpad
is dropped.
This struct wraps Marker
trait methods to avoid the need to import
Marker
into scope.
Methods
impl<'scratchpad, BufferT, TrackingT> MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
[src]
impl<'scratchpad, BufferT, TrackingT> MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
pub fn allocate<'marker, T>(
&'marker self,
value: T
) -> Result<Allocation<'marker, T>, Error<(T,)>>
[src]
pub fn allocate<'marker, T>(
&'marker self,
value: T
) -> Result<Allocation<'marker, T>, Error<(T,)>>
Allocates space for the given value, moving it into the allocation.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 1], [usize; 1]>::new([0], [0]); let marker = scratchpad.mark_front().unwrap(); let x = marker.allocate(3.14159).unwrap(); assert_eq!(*x, 3.14159);
pub fn allocate_default<'marker, T: Default>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
[src]
pub fn allocate_default<'marker, T: Default>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
Allocates space for a value, initializing it to its default.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 1], [usize; 1]>::new([0], [0]); let marker = scratchpad.mark_front().unwrap(); let x = marker.allocate_default::<f64>().unwrap(); assert_eq!(*x, 0.0);
pub unsafe fn allocate_uninitialized<'marker, T>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
[src]
pub unsafe fn allocate_uninitialized<'marker, T>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
Allocates uninitialized space for the given type.
Safety
Since memory for the allocated data is uninitialized, it can
potentially be in an invalid state for a given type, leading to
undefined program behavior. It is recommended that one of the safe
allocate*()
methods are used instead if possible.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 1], [usize; 1]>::new([0], [0]); let marker = scratchpad.mark_front().unwrap(); let mut x = unsafe { marker.allocate_uninitialized().unwrap() }; *x = 3.14159; assert_eq!(*x, 3.14159);
pub fn allocate_array<'marker, T: Clone>(
&'marker self,
len: usize,
value: T
) -> Result<Allocation<'marker, [T]>, Error<(T,)>>
[src]
pub fn allocate_array<'marker, T: Clone>(
&'marker self,
len: usize,
value: T
) -> Result<Allocation<'marker, [T]>, Error<(T,)>>
Allocates space for an array, initializing each element with the given value.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 3], [usize; 1]>::new([0; 3], [0]); let marker = scratchpad.mark_front().unwrap(); let x = marker.allocate_array(3, 3.14159).unwrap(); assert_eq!(*x, [3.14159, 3.14159, 3.14159]);
pub fn allocate_array_default<'marker, T: Default>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
[src]
pub fn allocate_array_default<'marker, T: Default>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
Allocates space for an array, initializing each element to its default value.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 3], [usize; 1]>::new([0; 3], [0]); let marker = scratchpad.mark_front().unwrap(); let x = marker.allocate_array_default::<f64>(3).unwrap(); assert_eq!(*x, [0.0, 0.0, 0.0]);
pub fn allocate_array_with<'marker, T, F: FnMut(usize) -> T>(
&'marker self,
len: usize,
func: F
) -> Result<Allocation<'marker, [T]>, Error<()>>
[src]
pub fn allocate_array_with<'marker, T, F: FnMut(usize) -> T>(
&'marker self,
len: usize,
func: F
) -> Result<Allocation<'marker, [T]>, Error<()>>
Allocates space for an array, initializing each element with the result of a function.
The function func
takes a single parameter containing the index of
the element being initialized.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 3], [usize; 1]>::new([0; 3], [0]); let marker = scratchpad.mark_front().unwrap(); let x = marker.allocate_array_with(3, |index| index as f64).unwrap(); assert_eq!(*x, [0.0, 1.0, 2.0]);
pub unsafe fn allocate_array_uninitialized<'marker, T>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
[src]
pub unsafe fn allocate_array_uninitialized<'marker, T>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
Allocates uninitialized space for an array of the given type.
Safety
Since memory for the allocated data is uninitialized, it can
potentially be in an invalid state for a given type, leading to
undefined program behavior. It is recommended that one of the safe
allocate*()
methods are used instead if possible.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 3], [usize; 1]>::new([0; 3], [0]); let marker = scratchpad.mark_front().unwrap(); let mut x = unsafe { marker.allocate_array_uninitialized(3).unwrap() }; x[0] = 3.14159; x[1] = 4.14159; x[2] = 5.14159; assert_eq!(*x, [3.14159, 4.14159, 5.14159]);
pub fn allocate_slice<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: SliceLike,
U: SliceMoveSource<T>,
[src]
pub fn allocate_slice<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: SliceLike,
U: SliceMoveSource<T>,
Allocates a slice, initializing its contents by moving the given values into the allocation.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u64; 3], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let values = [3.14159, 4.14159, 5.14159]; let allocation = marker.allocate_slice(values).unwrap(); let allocation_slice: &[f64] = &*allocation; assert_eq!(*allocation_slice, [3.14159, 4.14159, 5.14159]);
pub fn allocate_slice_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Clone,
U: SliceSource<T>,
[src]
pub fn allocate_slice_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Clone,
U: SliceSource<T>,
Allocates a copy of a slice by cloning each individual element.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u8; 32], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let message = "foo"; let allocation = marker.allocate_slice_clone(message).unwrap(); assert_eq!(&*allocation, "foo");
pub fn allocate_slice_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Copy,
U: SliceSource<T>,
[src]
pub fn allocate_slice_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Copy,
U: SliceSource<T>,
Allocates a copy of a slice by performing a fast copy (equivalent to
C's memcpy()
function) into the new allocation.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u8; 32], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let message = "foo"; let allocation = marker.allocate_slice_copy(message).unwrap(); assert_eq!(&*allocation, "foo");
pub fn append<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>, V)>> where
T: ConcatenateSlice,
U: IntoMutSliceLikePtr<T>,
V: SliceMoveSource<T>,
[src]
pub fn append<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>, V)>> where
T: ConcatenateSlice,
U: IntoMutSliceLikePtr<T>,
V: SliceMoveSource<T>,
Extends an allocation by moving values onto its end, converting the allocation to a slice if necessary.
The following requirements must be met to allow elements to be appended:
- The marker must be the most recently created front marker from its scratchpad.
- The allocation must contain a scalar, array, or slice of the type being pushed.
- The data being pushed must be a scalar, array, boxed slice, or vector of the same type.
- The allocation must be the most recent allocation made from this marker, even if other, more recent allocations have been released.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u32; 5], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let a = marker.allocate([3.14159f32, 2.71828f32]).unwrap(); let ab = marker.append(a, [0.70711f32]).unwrap(); assert_eq!(*ab, [3.14159f32, 2.71828f32, 0.70711f32]); let abc = marker.append(ab, vec![0.57722f32, 1.61803f32]).unwrap(); assert_eq!( *abc, [3.14159f32, 2.71828f32, 0.70711f32, 0.57722f32, 1.61803f32], );
pub fn append_clone<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
[src]
pub fn append_clone<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
Extends an allocation by cloning values onto its end, converting the allocation to a slice if necessary.
The following requirements must be met to allow elements to be appended:
- The marker must be the most recently created front marker from its scratchpad.
- The allocation must contain a scalar, array, or slice of the type being pushed.
- The data being pushed must be a scalar, array, boxed slice, or vector of the same type.
- The allocation must be the most recent allocation made from this marker, even if other, more recent allocations have been released.
Note that the values
parameter is consumed as part of the allocation
process and cannot be returned on error.
Examples
use scratchpad::{Allocation, Scratchpad}; let scratchpad = Scratchpad::<[u32; 5], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let a: Allocation<[f32]> = marker.allocate([3.14159f32, 2.71828f32]) .unwrap() .into_slice_like_allocation(); let ab = marker.append_clone(a, &[0.57722f32, 1.61803f32][..]) .unwrap(); assert_eq!(*ab, [3.14159f32, 2.71828f32, 0.57722f32, 1.61803f32]);
pub fn append_copy<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
[src]
pub fn append_copy<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
Extends an allocation by copying values onto its end, converting the allocation to a slice if necessary.
The following requirements must be met to allow elements to be appended:
- The marker must be the most recently created front marker from its scratchpad.
- The allocation must contain a scalar, array, or slice of the type being pushed.
- The data being pushed must be a scalar, array, boxed slice, or vector of the same type.
- The allocation must be the most recent allocation made from this marker, even if other, more recent allocations have been released.
Note that the values
parameter is consumed as part of the allocation
process and cannot be returned on error.
Examples
use scratchpad::{Allocation, Scratchpad}; let scratchpad = Scratchpad::<[u32; 5], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let a: Allocation<[f32]> = marker.allocate([3.14159f32, 2.71828f32]) .unwrap() .into_slice_like_allocation(); let ab = marker.append_copy(a, &[0.57722f32, 1.61803f32][..]) .unwrap(); assert_eq!(*ab, [3.14159f32, 2.71828f32, 0.57722f32, 1.61803f32]);
pub fn concat_slices<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: ConcatenateSlice,
U: SliceMoveSourceCollection<T>,
[src]
pub fn concat_slices<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: ConcatenateSlice,
U: SliceMoveSourceCollection<T>,
Combines each of the provided slices into a single slice allocated from this marker, moving the slice values into the new allocation.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u8; 16], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let combined = marker.concat_slices(("Hello,", " world", "!")) .unwrap(); assert_eq!(&*combined, "Hello, world!");
pub fn concat_slices_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: SliceSourceCollection<T>,
[src]
pub fn concat_slices_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: SliceSourceCollection<T>,
Combines cloned copies of each of the provided slices into a single slice allocated from this marker.
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u8; 16], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let combined = marker.concat_slices_clone(("Hello,", " world", "!")) .unwrap(); assert_eq!(&*combined, "Hello, world!");
pub fn concat_slices_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: SliceSourceCollection<T>,
[src]
pub fn concat_slices_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: SliceSourceCollection<T>,
Combines copies of each of the provided slices into a single slice allocated from this marker.
Slices are copied by performing a fast memory copy from each of the
source slices (equivalent to C's memcpy()
function).
Examples
use scratchpad::Scratchpad; let scratchpad = Scratchpad::<[u8; 16], [usize; 1]>::static_new(); let marker = scratchpad.mark_front().unwrap(); let combined = marker.concat_slices_copy(("Hello,", " world", "!")) .unwrap(); assert_eq!(&*combined, "Hello, world!");
Trait Implementations
impl<'scratchpad, BufferT: Debug, TrackingT: Debug> Debug for MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
[src]
impl<'scratchpad, BufferT: Debug, TrackingT: Debug> Debug for MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl<'scratchpad, BufferT, TrackingT> Marker for MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
[src]
impl<'scratchpad, BufferT, TrackingT> Marker for MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
unsafe fn allocate_memory(
&self,
alignment: usize,
size: usize,
len: usize
) -> Result<*mut u8, Error<()>>
[src]
unsafe fn allocate_memory(
&self,
alignment: usize,
size: usize,
len: usize
) -> Result<*mut u8, Error<()>>
fn is_allocation_at_end<'marker, T: ?Sized, U: ?Sized>(
&'marker self,
allocation: &Allocation<'marker, T>
) -> bool where
T: IntoMutSliceLikePtr<U>,
U: SliceLike,
[src]
fn is_allocation_at_end<'marker, T: ?Sized, U: ?Sized>(
&'marker self,
allocation: &Allocation<'marker, T>
) -> bool where
T: IntoMutSliceLikePtr<U>,
U: SliceLike,
unsafe fn concat_allocations_unchecked<'marker, T: ?Sized, U: ?Sized, V: ?Sized>(
base: Allocation<'marker, U>,
extension: Allocation<'marker, V>
) -> Allocation<'marker, T> where
T: ConcatenateSlice,
U: IntoMutSliceLikePtr<T>,
V: IntoMutSliceLikePtr<T>,
[src]
unsafe fn concat_allocations_unchecked<'marker, T: ?Sized, U: ?Sized, V: ?Sized>(
base: Allocation<'marker, U>,
extension: Allocation<'marker, V>
) -> Allocation<'marker, T> where
T: ConcatenateSlice,
U: IntoMutSliceLikePtr<T>,
V: IntoMutSliceLikePtr<T>,
fn allocate<'marker, T>(
&'marker self,
value: T
) -> Result<Allocation<'marker, T>, Error<(T,)>>
[src]
fn allocate<'marker, T>(
&'marker self,
value: T
) -> Result<Allocation<'marker, T>, Error<(T,)>>
Allocates space for the given value, moving it into the allocation. Read more
fn allocate_default<'marker, T: Default>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
[src]
fn allocate_default<'marker, T: Default>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
Allocates space for a value, initializing it to its default. Read more
unsafe fn allocate_uninitialized<'marker, T>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
[src]
unsafe fn allocate_uninitialized<'marker, T>(
&'marker self
) -> Result<Allocation<'marker, T>, Error<()>>
Allocates uninitialized space for the given type. Read more
fn allocate_array<'marker, T: Clone>(
&'marker self,
len: usize,
value: T
) -> Result<Allocation<'marker, [T]>, Error<(T,)>>
[src]
fn allocate_array<'marker, T: Clone>(
&'marker self,
len: usize,
value: T
) -> Result<Allocation<'marker, [T]>, Error<(T,)>>
Allocates space for an array, initializing each element with the given value. Read more
fn allocate_array_default<'marker, T: Default>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
[src]
fn allocate_array_default<'marker, T: Default>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
Allocates space for an array, initializing each element to its default value. Read more
fn allocate_array_with<'marker, T, F: FnMut(usize) -> T>(
&'marker self,
len: usize,
func: F
) -> Result<Allocation<'marker, [T]>, Error<()>>
[src]
fn allocate_array_with<'marker, T, F: FnMut(usize) -> T>(
&'marker self,
len: usize,
func: F
) -> Result<Allocation<'marker, [T]>, Error<()>>
Allocates space for an array, initializing each element with the result of a function. Read more
unsafe fn allocate_array_uninitialized<'marker, T>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
[src]
unsafe fn allocate_array_uninitialized<'marker, T>(
&'marker self,
len: usize
) -> Result<Allocation<'marker, [T]>, Error<()>>
Allocates uninitialized space for an array of the given type. Read more
fn allocate_slice<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: SliceLike,
U: SliceMoveSource<T>,
[src]
fn allocate_slice<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: SliceLike,
U: SliceMoveSource<T>,
Allocates a slice, initializing its contents by moving the given values into the allocation. Read more
fn allocate_slice_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Clone,
U: SliceSource<T>,
[src]
fn allocate_slice_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Clone,
U: SliceSource<T>,
Allocates a copy of a slice by cloning each individual element. Read more
fn allocate_slice_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Copy,
U: SliceSource<T>,
[src]
fn allocate_slice_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: SliceLike,
<T as SliceLike>::Element: Copy,
U: SliceSource<T>,
Allocates a copy of a slice by performing a fast copy (equivalent to C's memcpy()
function) into the new allocation. Read more
fn extend<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>, V)>> where
T: ConcatenateSlice,
U: IntoMutSliceLikePtr<T>,
V: SliceMoveSource<T>,
[src]
fn extend<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>, V)>> where
T: ConcatenateSlice,
U: IntoMutSliceLikePtr<T>,
V: SliceMoveSource<T>,
Extends an allocation by moving values onto one of its ends, converting the allocation to a slice if necessary. Read more
fn extend_clone<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
[src]
fn extend_clone<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
Extends an allocation by cloning values onto one of its ends, converting the allocation to a slice if necessary. Read more
fn extend_copy<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
[src]
fn extend_copy<'marker, T: ?Sized, U: ?Sized, V>(
&'marker self,
allocation: Allocation<'marker, U>,
values: V
) -> Result<Allocation<'marker, T>, Error<(Allocation<'marker, U>,)>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: IntoMutSliceLikePtr<T>,
V: SliceSource<T>,
Extends an allocation by copying values onto one of its ends, converting the allocation to a slice if necessary. Read more
fn concat_slices<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: ConcatenateSlice,
U: SliceMoveSourceCollection<T>,
[src]
fn concat_slices<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<(U,)>> where
T: ConcatenateSlice,
U: SliceMoveSourceCollection<T>,
Combines each of the provided slices into a single slice allocated from this marker, moving the slice values into the new allocation. Read more
fn concat_slices_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: SliceSourceCollection<T>,
[src]
fn concat_slices_clone<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Clone,
U: SliceSourceCollection<T>,
Combines cloned copies of each of the provided slices into a single slice allocated from this marker. Read more
fn concat_slices_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: SliceSourceCollection<T>,
[src]
fn concat_slices_copy<'marker, T: ?Sized, U>(
&'marker self,
values: U
) -> Result<Allocation<'marker, T>, Error<()>> where
T: ConcatenateSlice,
<T as SliceLike>::Element: Copy,
U: SliceSourceCollection<T>,
Combines copies of each of the provided slices into a single slice allocated from this marker. Read more
impl<'scratchpad, BufferT, TrackingT> Drop for MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
[src]
impl<'scratchpad, BufferT, TrackingT> Drop for MarkerFront<'scratchpad, BufferT, TrackingT> where
BufferT: 'scratchpad + Buffer,
TrackingT: 'scratchpad + Tracking,
Auto Trait Implementations
impl<'scratchpad, BufferT, TrackingT> !Send for MarkerFront<'scratchpad, BufferT, TrackingT>
impl<'scratchpad, BufferT, TrackingT> !Send for MarkerFront<'scratchpad, BufferT, TrackingT>
impl<'scratchpad, BufferT, TrackingT> !Sync for MarkerFront<'scratchpad, BufferT, TrackingT>
impl<'scratchpad, BufferT, TrackingT> !Sync for MarkerFront<'scratchpad, BufferT, TrackingT>