1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
//! Harmonious distributed data processing & analysis in Rust.
//!
//! <p style="font-family: 'Fira Sans',sans-serif;padding:0.3em 0"><strong>
//! <a href="https://crates.io/crates/amadeus">📦&nbsp;&nbsp;Crates.io</a>&nbsp;&nbsp;│&nbsp;&nbsp;<a href="https://github.com/constellation-rs/amadeus">📑&nbsp;&nbsp;GitHub</a>&nbsp;&nbsp;│&nbsp;&nbsp;<a href="https://constellation.zulipchat.com/#narrow/stream/213231-amadeus">💬&nbsp;&nbsp;Chat</a>
//! </strong></p>
//!
//! This is a support crate of [Amadeus](https://github.com/constellation-rs/amadeus) and is not intended to be used directly. All functionality is re-exposed in [`amadeus`](https://docs.rs/amadeus/0.3/amadeus/).

#![doc(html_root_url = "https://docs.rs/amadeus-core/0.4.3")]
#![cfg_attr(nightly, feature(unboxed_closures))]
#![recursion_limit = "25600"]
#![warn(
	// missing_copy_implementations,
	// missing_debug_implementations,
	// missing_docs,
	trivial_numeric_casts,
	unused_import_braces,
	unused_qualifications,
	unused_results,
	unreachable_pub,
	clippy::pedantic,
)]
#![allow(
	clippy::module_name_repetitions,
	clippy::if_not_else,
	clippy::similar_names,
	clippy::type_repetition_in_bounds,
	clippy::missing_errors_doc,
	clippy::must_use_candidate,
	clippy::unsafe_derive_deserialize,
	clippy::inline_always,
	clippy::option_option,
	clippy::default_trait_access,
	clippy::wildcard_imports,
	clippy::needless_pass_by_value,
	clippy::unnecessary_wraps,
	clippy::missing_panics_doc,
	clippy::let_underscore_drop,
	clippy::unnested_or_patterns
)]
#![deny(unsafe_code)]

macro_rules! impl_par_dist {
	($($body:tt)*) => {
		$($body)*
		const _: () = {
			use $crate::impl_par_dist::*;
			#[allow(unused_imports)]
			use $crate::impl_par_dist::{combiner_par_sink,folder_par_sink};
			$($body)*
		};
	}
}
mod impl_par_dist {
	#[allow(unused_imports)]
	pub(crate) use crate::{
		combiner_dist_sink as combiner_par_sink, folder_dist_sink as folder_par_sink, par_pipe::DistributedPipe as ParallelPipe, par_sink::{DistributedSink as ParallelSink, FromDistributedStream as FromParallelStream}, par_stream::DistributedStream as ParallelStream, pool::ProcessSend as Send
	};
}

macro_rules! impl_par_dist_rename {
	($($body:tt)*) => {
		$($body)*
		rename! { [
			ParallelStream DistributedStream
			ParallelSink DistributedSink
			ParallelPipe DistributedPipe
			FromParallelStream FromDistributedStream
			IntoParallelStream IntoDistributedStream
			ParStream DistStream
			Send ProcessSend
			IterParStream IterDistStream
			into_par_stream into_dist_stream
			par_stream dist_stream
			assert_parallel_sink assert_distributed_sink
			assert_parallel_pipe assert_distributed_pipe
			assert_parallel_stream assert_distributed_stream
		] $($body)* }
	}
}
macro_rules! rename {
	([$($from:ident $to:ident)*] $($body:tt)*) => (rename!(@inner [$] [$($from $to)*] $($body)*););
	(@inner [$d:tt] [$($from:ident $to:ident)*] $($body:tt)*) => (
		macro_rules! __rename {
			$(
				(@munch [$d ($d done:tt)*] $from $d ($d body:tt)*) => (__rename!{@munch [$d ($d done)* $to] $d ($d body)*});
			)*
			(@munch [$d ($d done:tt)*] { $d ($d head:tt)* } $d ($d body:tt)*) => (__rename!{@munch [$d ($d done)* { __rename!{$d ($d head)*} }] $d ($d body)*});
			(@munch [$d ($d done:tt)*] $d head:tt $d ($d body:tt)*) => (__rename!{@munch [$d ($d done)* $d head] $d ($d body)*});
			(@munch [$d ($d done:tt)*]) => ($d ($d done)*);
			($d ($d body:tt)*) => (__rename!{@munch [] $d ($d body)*});
		}
		__rename!($($body)*);
	);
}

pub mod file;
pub mod into_par_stream;
pub mod misc_serde;
pub mod par_pipe;
pub mod par_sink;
pub mod par_stream;
pub mod pipe;
pub mod pool;
mod source;
pub mod util;

pub use source::*;