slabbable_impl_selector/
lib.rs1#![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 pub type SelectedSlab<Item> = slabbable_stablevec::StableVecSlab<Item>;
35 } else if #[cfg(slabbable_impl = "slab")] {
36 pub type SelectedSlab<Item> = slabbable_slab::SlabSlab<Item>;
38 } else if #[cfg(slabbable_impl = "hash")] {
39 pub type SelectedSlab<Item> = slabbable_hash::HashSlab<Item>;
41 } else {
42 pub type SelectedSlab<Item> = slabbable_hash::HashSlab<Item>;
44 }
45}