slabbable_impl_selector/
lib.rs

1#![warn(
2    clippy::unwrap_used,
3    missing_docs,
4    rust_2018_idioms,
5    unused_lifetimes,
6    unused_qualifications
7)]
8#![allow(clippy::single_match, rustdoc::bare_urls)]
9#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
10#![doc = include_str!("../README.md")]
11
12#[cfg(all(
13    slabbable_impl = "stablevec",
14    any(slabbable_impl = "slab", slabbable_impl = "hash")
15))]
16compile_error!("slabbable-impl_selector: must not choose stablevec with anything else");
17
18#[cfg(all(
19    slabbable_impl = "slab",
20    any(slabbable_impl = "stablevec", slabbable_impl = "hash")
21))]
22compile_error!("slabbable-impl_selector: must not choose slab with anything else");
23
24#[cfg(all(
25    slabbable_impl = "hash",
26    any(slabbable_impl = "slab", slabbable_impl = "stablevec")
27))]
28compile_error!("slabbable-impl_selector: must not choose hash with anything else");
29
30cfg_if::cfg_if! {
31
32    if #[cfg(slabbable_impl = "stablevec")] {
33        /// Selected impl is StableVec
34        pub type SelectedSlab<Item> = slabbable_stablevec::StableVecSlab<Item>;
35    } else if #[cfg(slabbable_impl = "slab")] {
36        /// Selected impl is Slab
37        pub type SelectedSlab<Item> = slabbable_slab::SlabSlab<Item>;
38    } else if  #[cfg(slabbable_impl = "hash")] {
39        /// Selected impl is Hash
40        pub type SelectedSlab<Item> = slabbable_hash::HashSlab<Item>;
41    } else {
42        /// Selected default impl is Hash
43        pub type SelectedSlab<Item> = slabbable_hash::HashSlab<Item>;
44    }
45}