pub struct ScopedAllocator<'a> { /* private fields */ }Expand description
A dynamic wrapper around an AllocatorCore that provides the guarantee that all
allocated object are tied to a given scope.
Additionally, this can allow the use of an allocator that is not Clone in contexts
where a clonable allocator is needed (provided the scoping limitations are acceptable).
Implementations§
Source§impl<'a> ScopedAllocator<'a>
impl<'a> ScopedAllocator<'a>
Sourcepub const fn new<T>(allocator: &'a T) -> Selfwhere
T: AllocatorCore + Debug,
pub const fn new<T>(allocator: &'a T) -> Selfwhere
T: AllocatorCore + Debug,
Construct a new ScopedAllocator around the provided allocator.
Source§impl ScopedAllocator<'static>
impl ScopedAllocator<'static>
Sourcepub const fn global() -> Self
pub const fn global() -> Self
A convenience method for construcing a ScopedAllocator around the GlobalAllocator
for cases where a more specialized allocator is not needed.
Trait Implementations§
Source§impl AllocatorCore for ScopedAllocator<'_>
impl AllocatorCore for ScopedAllocator<'_>
Source§impl<'a> Clone for ScopedAllocator<'a>
impl<'a> Clone for ScopedAllocator<'a>
Source§fn clone(&self) -> ScopedAllocator<'a>
fn clone(&self) -> ScopedAllocator<'a>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<A> CompressIntoWith<&[f32], Slice<&mut [f32], Mut<'_, FullQueryMeta>>, ScopedAllocator<'_>> for SphericalQuantizer<A>where
A: Allocator,
impl<A> CompressIntoWith<&[f32], Slice<&mut [f32], Mut<'_, FullQueryMeta>>, ScopedAllocator<'_>> for SphericalQuantizer<A>where
A: Allocator,
Source§fn compress_into_with(
&self,
from: &[f32],
into: FullQueryMut<'_>,
allocator: ScopedAllocator<'_>,
) -> Result<(), Self::Error>
fn compress_into_with( &self, from: &[f32], into: FullQueryMut<'_>, allocator: ScopedAllocator<'_>, ) -> Result<(), Self::Error>
Compress the input vector from into the bitslice into.
§Error
Returns an error if
- The input contains
NaN. from.len() != self.dim(): Vector to be compressed must have the same dimensionality as the quantizer.into.len() != self.output_dim(): Compressed vector must have the same dimensionality as the output of the distance-preserving transform. Importantely, this may be different thanself.dim()and should be retrieved fromself.output_dim().
Source§type Error = CompressionError
type Error = CompressionError
Errors that may occur during compression.
Source§impl<const NBITS: usize, A> CompressIntoWith<&[f32], VectorBase<NBITS, Unsigned, MutSlicePtr<'_, u8>, Mut<'_, DataMeta>>, ScopedAllocator<'_>> for SphericalQuantizer<A>
impl<const NBITS: usize, A> CompressIntoWith<&[f32], VectorBase<NBITS, Unsigned, MutSlicePtr<'_, u8>, Mut<'_, DataMeta>>, ScopedAllocator<'_>> for SphericalQuantizer<A>
Source§fn compress_into_with(
&self,
from: &[f32],
into: DataMut<'_, NBITS>,
allocator: ScopedAllocator<'_>,
) -> Result<(), Self::Error>
fn compress_into_with( &self, from: &[f32], into: DataMut<'_, NBITS>, allocator: ScopedAllocator<'_>, ) -> Result<(), Self::Error>
Compress the input vector from into the bitslice into.
§Error
Returns an error if
- The input contains
NaN. from.len() != self.dim(): Vector to be compressed must have the same dimensionality as the quantizer.into.len() != self.output_dim(): Compressed vector must have the same dimensionality as the output of the distance-preserving transform. Importantely, this may be different thanself.dim()and should be retrieved fromself.output_dim().
Source§type Error = CompressionError
type Error = CompressionError
Errors that may occur during compression.
Source§impl<const NBITS: usize, Perm, A> CompressIntoWith<&[f32], VectorBase<NBITS, Unsigned, MutSlicePtr<'_, u8>, Mut<'_, QueryMeta>, Perm>, ScopedAllocator<'_>> for SphericalQuantizer<A>
impl<const NBITS: usize, Perm, A> CompressIntoWith<&[f32], VectorBase<NBITS, Unsigned, MutSlicePtr<'_, u8>, Mut<'_, QueryMeta>, Perm>, ScopedAllocator<'_>> for SphericalQuantizer<A>
Source§fn compress_into_with(
&self,
from: &[f32],
into: QueryMut<'_, NBITS, Perm>,
allocator: ScopedAllocator<'_>,
) -> Result<(), Self::Error>
fn compress_into_with( &self, from: &[f32], into: QueryMut<'_, NBITS, Perm>, allocator: ScopedAllocator<'_>, ) -> Result<(), Self::Error>
Compress the input vector from into the bitslice into.
§Error
Returns an error if
- The input contains
NaN. from.len() != self.dim(): Vector to be compressed must have the same dimensionality as the quantizer.into.len() != self.output_dim(): Compressed vector must have the same dimensionality as the output of the distance-preserving transform. Importantely, this may be different thanself.dim()and should be retrieved fromself.output_dim().
Source§type Error = CompressionError
type Error = CompressionError
Errors that may occur during compression.
Source§impl<'a> Debug for ScopedAllocator<'a>
impl<'a> Debug for ScopedAllocator<'a>
impl<'a> Copy for ScopedAllocator<'a>
Auto Trait Implementations§
impl<'a> Freeze for ScopedAllocator<'a>
impl<'a> !RefUnwindSafe for ScopedAllocator<'a>
impl<'a> !Send for ScopedAllocator<'a>
impl<'a> !Sync for ScopedAllocator<'a>
impl<'a> Unpin for ScopedAllocator<'a>
impl<'a> !UnwindSafe for ScopedAllocator<'a>
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§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more