mod application_created_stream;
mod has_stream;
mod markers;
mod stream;
pub use application_created_stream::ApplicationCreatedStream;
pub use has_stream::HasStream;
pub use markers::{BufferedStream, CommittedStream, DefaultStream, PendingStream};
pub use stream::Stream;
#[cfg(test)]
mod tests {
use super::*;
use crate::write::format::{Arrow, Proto};
use crate::write::{BufferedWriter, CommittedWriter, DefaultWriter, PendingWriter};
use static_assertions::{assert_impl_all, assert_not_impl_any};
macro_rules! assert_format_mappings {
($F:ty) => {
assert_impl_all!(DefaultStream: Stream<Writer<$F> = DefaultWriter<$F>>);
assert_impl_all!(PendingStream: Stream<Writer<$F> = PendingWriter<$F>>);
assert_impl_all!(CommittedStream: Stream<Writer<$F> = CommittedWriter<$F>>);
assert_impl_all!(BufferedStream: Stream<Writer<$F> = BufferedWriter<$F>>);
assert_impl_all!(DefaultWriter<$F>: HasStream<Stream = DefaultStream>);
assert_impl_all!(PendingWriter<$F>: HasStream<Stream = PendingStream>);
assert_impl_all!(CommittedWriter<$F>: HasStream<Stream = CommittedStream>);
assert_impl_all!(BufferedWriter<$F>: HasStream<Stream = BufferedStream>);
};
}
#[test]
fn stream_and_writer_mappings() {
assert_format_mappings!(Arrow);
assert_format_mappings!(Proto);
assert_impl_all!(PendingStream: ApplicationCreatedStream);
assert_impl_all!(CommittedStream: ApplicationCreatedStream);
assert_impl_all!(BufferedStream: ApplicationCreatedStream);
assert_not_impl_any!(DefaultStream: ApplicationCreatedStream);
}
}