1#![deny(missing_docs)]
2pub type BoxFut<'a, T> =
9 std::pin::Pin<Box<dyn std::future::Future<Output = T> + Send + 'a>>;
10
11pub(crate) mod serde_bytes_base64 {
12 pub fn serialize<S>(
13 b: &bytes::Bytes,
14 serializer: S,
15 ) -> Result<S::Ok, S::Error>
16 where
17 S: serde::Serializer,
18 {
19 use base64::prelude::*;
20 serializer.serialize_str(&BASE64_URL_SAFE_NO_PAD.encode(b))
21 }
22
23 pub fn deserialize<'de, D, T: From<bytes::Bytes>>(
24 deserializer: D,
25 ) -> Result<T, D::Error>
26 where
27 D: serde::Deserializer<'de>,
28 {
29 use base64::prelude::*;
30 let s: &'de str = serde::Deserialize::deserialize(deserializer)?;
31 BASE64_URL_SAFE_NO_PAD
32 .decode(s)
33 .map(|v| bytes::Bytes::copy_from_slice(&v).into())
34 .map_err(serde::de::Error::custom)
35 }
36}
37
38mod access;
39pub use access::*;
40
41mod agent;
42pub use agent::*;
43
44mod arc;
45pub use arc::*;
46
47mod blocks;
48pub use blocks::*;
49
50mod bootstrap;
51pub use bootstrap::*;
52
53mod builder;
54pub use builder::*;
55
56mod config;
57pub use config::*;
58
59mod kitsune;
60pub use kitsune::*;
61
62mod peer_store;
63pub use peer_store::*;
64
65mod space;
66pub use space::*;
67
68mod transport;
69pub use transport::*;
70
71mod error;
72pub use error::*;
73
74mod id;
75pub use id::*;
76
77mod timestamp;
78pub use timestamp::*;
79
80mod fetch;
81pub use fetch::*;
82
83mod report;
84pub use report::*;
85
86mod peer_meta_store;
87pub use peer_meta_store::*;
88
89mod gossip;
90pub use gossip::*;
91
92mod local_agent_store;
93pub use local_agent_store::*;
94
95mod op_store;
96pub use op_store::*;
97
98mod protocol;
99pub use protocol::*;
100
101mod publish;
102pub use publish::*;
103
104mod url;
105pub use url::*;
106
107#[cfg(any(doc, docsrs))]
108pub mod doc;