pub struct ExternalSorter { /* private fields */ }Implementations§
Source§impl ExternalSorter
impl ExternalSorter
Sourcepub fn sort<I, T>(
&self,
input: I,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send + Ord,
T::Archived: Deserialize<T, DiskDeserializer>,
I: IntoIterator<Item = T>,
pub fn sort<I, T>(
&self,
input: I,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send + Ord,
T::Archived: Deserialize<T, DiskDeserializer>,
I: IntoIterator<Item = T>,
Sourcepub fn sort_by<I, T, F>(
&self,
input: I,
cmp: F,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send,
T::Archived: Deserialize<T, DiskDeserializer>,
I: IntoIterator<Item = T>,
F: Fn(&T, &T) -> Ordering + Sync + Send + Copy,
pub fn sort_by<I, T, F>(
&self,
input: I,
cmp: F,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send,
T::Archived: Deserialize<T, DiskDeserializer>,
I: IntoIterator<Item = T>,
F: Fn(&T, &T) -> Ordering + Sync + Send + Copy,
Sourcepub fn sort_async<I, T>(
&self,
input: I,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send + Ord + 'static,
T::Archived: Deserialize<T, DiskDeserializer>,
I: IntoIterator<Item = T>,
pub fn sort_async<I, T>(
&self,
input: I,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send + Ord + 'static,
T::Archived: Deserialize<T, DiskDeserializer>,
I: IntoIterator<Item = T>,
Asynchronously sorts items using Ord and returns a sorted iterator.
This delegates to ExternalSorter::sort_by_async with T::cmp.
§Errors
Returns SortError if temporary chunk creation, serialization, or
deserialization fails.
Sourcepub fn sort_by_async<I, T, F>(
&self,
input: I,
cmp: F,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
I: IntoIterator<Item = T>,
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send + 'static,
T::Archived: Deserialize<T, DiskDeserializer>,
F: Fn(&T, &T) -> Ordering + Sync + Send + Copy + 'static,
pub fn sort_by_async<I, T, F>(
&self,
input: I,
cmp: F,
) -> Result<impl ExactSizeIterator<Item = Result<T, ExternalChunkError>>, SortError>where
I: IntoIterator<Item = T>,
T: Archive + for<'a> Serialize<DiskSerializer<'a>> + Send + 'static,
T::Archived: Deserialize<T, DiskDeserializer>,
F: Fn(&T, &T) -> Ordering + Sync + Send + Copy + 'static,
Asynchronously sorts items with a custom comparator and returns a sorted iterator.
Chunk sorting/spilling jobs are scheduled onto the configured rayon thread pool while input continues to be consumed on the caller thread.
§Errors
Returns SortError if any background job fails while creating,
serializing, or reading temporary chunks.
Auto Trait Implementations§
impl Freeze for ExternalSorter
impl !RefUnwindSafe for ExternalSorter
impl Send for ExternalSorter
impl Sync for ExternalSorter
impl Unpin for ExternalSorter
impl UnsafeUnpin for ExternalSorter
impl !UnwindSafe for ExternalSorter
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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> 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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.