clone_behavior/
lib.rs

1// See https://linebender.org/blog/doc-include for this README inclusion strategy
2// File links are not supported by rustdoc
3//!
4//! [LICENSE-APACHE]: https://github.com/robofinch/generic-container/blob/main/LICENSE-APACHE
5//! [LICENSE-MIT]: https://github.com/robofinch/generic-container/blob/main/LICENSE-MIT
6//!
7//! <style>
8//! .rustdoc-hidden { display: none; }
9//! </style>
10#![cfg_attr(doc, doc = include_str!("../README.md"))]
11
12#![expect(
13    missing_copy_implementations,
14    missing_debug_implementations,
15    reason = "The four uninhabited Speed types are what trigger these lints",
16)]
17
18#![no_std]
19
20#[cfg(feature = "std")]
21extern crate std;
22
23#[cfg(feature = "alloc")]
24extern crate alloc;
25
26
27mod speed;
28
29mod independent;
30mod mirrored;
31mod mixed;
32
33mod blanket_impls;
34
35
36pub use self::{
37    blanket_impls::NonRecursive,
38    independent::IndependentClone,
39    mirrored::MirroredClone,
40    mixed::MixedClone,
41};
42pub use self::speed::{Speed, NearInstant, ConstantTime, LogTime, AnySpeed};
43
44
45macro_rules! call_varargs_macro {
46    ($macro:ident) => {
47        $macro!(T1);
48        $macro!(T1, T2);
49        $macro!(T1, T2, T3);
50        $macro!(T1, T2, T3, T4);
51        $macro!(T1, T2, T3, T4, T5);
52        $macro!(T1, T2, T3, T4, T5, T6);
53        $macro!(T1, T2, T3, T4, T5, T6, T7);
54        $macro!(T1, T2, T3, T4, T5, T6, T7, T8);
55        $macro!(T1, T2, T3, T4, T5, T6, T7, T8, T9);
56        $macro!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
57        $macro!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11);
58        $macro!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12);
59    };
60}
61
62pub(crate) use call_varargs_macro;