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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#![ cfg_attr( nightly, feature( external_doc ) ) ]
#![ cfg_attr( nightly, doc ( include = "../README.md" ) ) ]
#![ doc = "" ]
#![ doc ( html_root_url = "https://docs.rs/thespis_impl" ) ]
#![ deny ( missing_docs ) ]
#![ forbid ( unsafe_code ) ]
#![ allow ( clippy::suspicious_else_formatting ) ]
#![ warn
(
missing_debug_implementations ,
missing_docs ,
nonstandard_style ,
rust_2018_idioms ,
trivial_casts ,
trivial_numeric_casts ,
unused_extern_crates ,
unused_qualifications ,
single_use_lifetimes ,
unreachable_pub ,
variant_size_differences ,
)]
mod actor_builder ;
mod addr ;
mod envelope ;
mod error ;
mod mailbox ;
mod receiver ;
pub use
{
actor_builder :: * ,
addr :: * ,
error :: * ,
mailbox :: * ,
receiver :: * ,
futures::{ SinkExt },
};
use futures::Sink;
pub type BoxEnvelope<A> = Box< dyn envelope::Envelope<A> + Send >;
pub type SinkError = Box< dyn std::error::Error + Send + 'static >;
pub type ChanSender<A> = Box< dyn CloneSink< 'static, BoxEnvelope<A>, SinkError> >;
pub type ChanReceiver<A> = Box< dyn futures::Stream<Item=BoxEnvelope<A>> + Send + Unpin >;
pub trait CloneSink<'a, Item, E>: Sink<Item, Error=E> + Unpin + Send
{
fn clone_sink( &self ) -> Box< dyn CloneSink<'a, Item, E> + 'a >;
}
impl<'a, T, Item, E> CloneSink<'a, Item, E> for T
where T: 'a + Sink<Item, Error=E> + Clone + Unpin + Send + ?Sized
{
fn clone_sink( &self ) -> Box< dyn CloneSink<'a, Item, E> + 'a >
{
Box::new( self.clone() )
}
}
mod import
{
pub(crate) use
{
thespis :: { * } ,
tracing :: { * } ,
tracing_futures :: { Instrument } ,
async_executors :: { SpawnHandle, SpawnHandleExt, LocalSpawnHandle, LocalSpawnHandleExt, JoinHandle } ,
std ::
{
fmt ,
pin :: { Pin } ,
sync :: { Arc, atomic::{ AtomicUsize, Ordering } } ,
panic :: { AssertUnwindSafe } ,
task :: { Context as TaskContext, Poll } ,
},
futures ::
{
stream :: { StreamExt } ,
sink :: { Sink, SinkExt } ,
channel :: { oneshot } ,
future :: { FutureExt } ,
task :: { Spawn, SpawnExt, LocalSpawn, LocalSpawnExt } ,
},
};
}