infinitree_backends/
lib.rs

1//! Additional backends to be used with
2//! [Infinitree](https://github.com/symmetree-labs/infinitree).
3//!
4#![forbid(unsafe_code)]
5#![deny(
6    arithmetic_overflow,
7    future_incompatible,
8    nonstandard_style,
9    rust_2018_idioms,
10    trivial_casts,
11    unused_crate_dependencies,
12    unused_lifetimes,
13    unused_qualifications,
14    rustdoc::bare_urls,
15    rustdoc::broken_intra_doc_links,
16    rustdoc::invalid_codeblock_attributes,
17    rustdoc::invalid_rust_codeblocks,
18    rustdoc::private_intra_doc_links
19)]
20#![deny(clippy::all)]
21
22#[macro_use]
23extern crate serde_derive;
24
25mod cache;
26pub use cache::*;
27
28mod s3;
29pub use s3::*;
30
31use std::future::Future;
32use tokio::{runtime, task};
33
34pub(crate) fn block_on<O>(fut: impl Future<Output = O>) -> O {
35    task::block_in_place(move || runtime::Handle::current().block_on(fut))
36}
37
38#[cfg(test)]
39mod test {
40    use infinitree::{backends::Backend, object::WriteObject};
41
42    pub(crate) const TEST_DATA_DIR: &str = "../test_data";
43
44    pub(crate) fn write_and_wait_for_commit(backend: &impl Backend, object: &WriteObject) {
45        backend.write_object(object).unwrap();
46        backend.sync().unwrap();
47    }
48}