amadeus_core/
lib.rs

1//! Harmonious distributed data processing & analysis in Rust.
2//!
3//! <p style="font-family: 'Fira Sans',sans-serif;padding:0.3em 0"><strong>
4//! <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>
5//! </strong></p>
6//!
7//! 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/).
8
9#![doc(html_root_url = "https://docs.rs/amadeus-core/0.4.3")]
10#![cfg_attr(nightly, feature(unboxed_closures))]
11#![recursion_limit = "25600"]
12#![warn(
13	// missing_copy_implementations,
14	// missing_debug_implementations,
15	// missing_docs,
16	trivial_numeric_casts,
17	unused_import_braces,
18	unused_qualifications,
19	unused_results,
20	unreachable_pub,
21	clippy::pedantic,
22)]
23#![allow(
24	clippy::module_name_repetitions,
25	clippy::if_not_else,
26	clippy::similar_names,
27	clippy::type_repetition_in_bounds,
28	clippy::missing_errors_doc,
29	clippy::must_use_candidate,
30	clippy::unsafe_derive_deserialize,
31	clippy::inline_always,
32	clippy::option_option,
33	clippy::default_trait_access,
34	clippy::wildcard_imports,
35	clippy::needless_pass_by_value,
36	clippy::unnecessary_wraps,
37	clippy::missing_panics_doc,
38	clippy::let_underscore_drop,
39	clippy::unnested_or_patterns
40)]
41#![deny(unsafe_code)]
42
43macro_rules! impl_par_dist {
44	($($body:tt)*) => {
45		$($body)*
46		const _: () = {
47			use $crate::impl_par_dist::*;
48			#[allow(unused_imports)]
49			use $crate::impl_par_dist::{combiner_par_sink,folder_par_sink};
50			$($body)*
51		};
52	}
53}
54mod impl_par_dist {
55	#[allow(unused_imports)]
56	pub(crate) use crate::{
57		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
58	};
59}
60
61macro_rules! impl_par_dist_rename {
62	($($body:tt)*) => {
63		$($body)*
64		rename! { [
65			ParallelStream DistributedStream
66			ParallelSink DistributedSink
67			ParallelPipe DistributedPipe
68			FromParallelStream FromDistributedStream
69			IntoParallelStream IntoDistributedStream
70			ParStream DistStream
71			Send ProcessSend
72			IterParStream IterDistStream
73			into_par_stream into_dist_stream
74			par_stream dist_stream
75			assert_parallel_sink assert_distributed_sink
76			assert_parallel_pipe assert_distributed_pipe
77			assert_parallel_stream assert_distributed_stream
78		] $($body)* }
79	}
80}
81macro_rules! rename {
82	([$($from:ident $to:ident)*] $($body:tt)*) => (rename!(@inner [$] [$($from $to)*] $($body)*););
83	(@inner [$d:tt] [$($from:ident $to:ident)*] $($body:tt)*) => (
84		macro_rules! __rename {
85			$(
86				(@munch [$d ($d done:tt)*] $from $d ($d body:tt)*) => (__rename!{@munch [$d ($d done)* $to] $d ($d body)*});
87			)*
88			(@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)*});
89			(@munch [$d ($d done:tt)*] $d head:tt $d ($d body:tt)*) => (__rename!{@munch [$d ($d done)* $d head] $d ($d body)*});
90			(@munch [$d ($d done:tt)*]) => ($d ($d done)*);
91			($d ($d body:tt)*) => (__rename!{@munch [] $d ($d body)*});
92		}
93		__rename!($($body)*);
94	);
95}
96
97pub mod file;
98pub mod into_par_stream;
99pub mod misc_serde;
100pub mod par_pipe;
101pub mod par_sink;
102pub mod par_stream;
103pub mod pipe;
104pub mod pool;
105mod source;
106pub mod util;
107
108pub use source::*;