1#![deny(
2 clippy::cargo,
3 clippy::nursery,
4 clippy::pedantic,
5 clippy::restriction,
6 rustdoc::missing_crate_level_docs,
7 rustdoc::private_doc_tests,
8 rustdoc::invalid_html_tags,
9 warnings,
10 absolute_paths_not_starting_with_crate,
11 elided_lifetimes_in_paths,
12 explicit_outlives_requirements,
13 keyword_idents,
14 macro_use_extern_crate,
15 meta_variable_misuse,
16 missing_abi,
17 missing_copy_implementations,
18 missing_debug_implementations,
19 missing_docs,
20 non_ascii_idents,
21 noop_method_call,
22 pointer_structural_match,
23 rust_2021_incompatible_closure_captures,
24 rust_2021_incompatible_or_patterns,
25 rust_2021_prefixes_incompatible_syntax,
26 rust_2021_prelude_collisions,
27 single_use_lifetimes,
28 trivial_casts,
29 trivial_numeric_casts,
30 unreachable_pub,
31 unsafe_code,
32 unsafe_op_in_unsafe_fn,
33 unstable_features,
34 unused_crate_dependencies,
35 unused_extern_crates,
36 unused_import_braces,
37 unused_lifetimes,
38 unused_macro_rules,
39 unused_qualifications,
40 variant_size_differences,
41 )]
48#![allow(
49 clippy::blanket_clippy_restriction_lints,
50 clippy::exhaustive_structs,
51 clippy::missing_inline_in_public_items,
52 clippy::implicit_return,
53 clippy::unwrap_used,
54 clippy::multiple_inherent_impl,
55 clippy::pattern_type_mismatch,
56 clippy::wildcard_enum_match_arm,
57 clippy::exhaustive_enums,
58 clippy::self_named_module_files,
59 clippy::pub_use,
60 clippy::else_if_without_else
61)]
62#![doc = include_str!("../README.md")]
63
64use core::sync::atomic::{AtomicI64, Ordering};
65
66pub use backend::Backend;
67pub use cache::Cache;
68
69pub mod backend;
73pub mod cache;
77pub mod model;
80#[cfg(feature = "tests")]
82pub mod tests;
83
84static ID_COUNTER: AtomicI64 = AtomicI64::new(1);
86
87fn unique_id() -> i64 {
89 ID_COUNTER.fetch_add(1, Ordering::Relaxed)
90}