pub trait Destination: Sized {
type TypeSystem: TypeSystem;
type Partition<'a>: DestinationPartition<'a, TypeSystem = Self::TypeSystem, Error = Self::Error>
where Self: 'a;
type Error: From<ConnectorXError> + Send;
const DATA_ORDERS: &'static [DataOrder];
// Required methods
fn needs_count(&self) -> bool;
fn allocate<S: AsRef<str>>(
&mut self,
nrow: usize,
names: &[S],
schema: &[Self::TypeSystem],
data_order: DataOrder,
) -> Result<(), Self::Error>;
fn partition(
&mut self,
counts: usize,
) -> Result<Vec<Self::Partition<'_>>, Self::Error>;
fn schema(&self) -> &[Self::TypeSystem];
}Expand description
A Destination is associated with a TypeSystem and a PartitionDestination.
PartitionDestination allows multiple threads write data into the buffer owned by Destination.
Required Associated Constants§
const DATA_ORDERS: &'static [DataOrder]
Required Associated Types§
type TypeSystem: TypeSystem
type Partition<'a>: DestinationPartition<'a, TypeSystem = Self::TypeSystem, Error = Self::Error> where Self: 'a
type Error: From<ConnectorXError> + Send
Required Methods§
Sourcefn needs_count(&self) -> bool
fn needs_count(&self) -> bool
Specify whether the destination needs total rows in advance in order to pre-allocate the buffer.
Sourcefn allocate<S: AsRef<str>>(
&mut self,
nrow: usize,
names: &[S],
schema: &[Self::TypeSystem],
data_order: DataOrder,
) -> Result<(), Self::Error>
fn allocate<S: AsRef<str>>( &mut self, nrow: usize, names: &[S], schema: &[Self::TypeSystem], data_order: DataOrder, ) -> Result<(), Self::Error>
Construct the Destination.
This allocates the memory based on the types of each columns
and the number of rows.
Sourcefn partition(
&mut self,
counts: usize,
) -> Result<Vec<Self::Partition<'_>>, Self::Error>
fn partition( &mut self, counts: usize, ) -> Result<Vec<Self::Partition<'_>>, Self::Error>
Create a bunch of partition destinations, with each write count number of rows.
Sourcefn schema(&self) -> &[Self::TypeSystem]
fn schema(&self) -> &[Self::TypeSystem]
Return the schema of the destination.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".