1#![cfg_attr(docsrs, feature(doc_auto_cfg))]
7#![doc(test(attr(warn(unused))))]
8#![doc(test(attr(allow(unused_extern_crates))))]
9#![warn(clippy::pedantic)]
10#![warn(clippy::default_numeric_fallback)]
11#![warn(clippy::dbg_macro)]
12#![warn(clippy::else_if_without_else)]
13#![warn(clippy::fn_to_numeric_cast_any)]
14#![warn(clippy::get_unwrap)]
15#![warn(clippy::if_then_some_else_none)]
16#![warn(clippy::mixed_read_write_in_expression)]
17#![warn(clippy::partial_pub_fields)]
18#![warn(clippy::rest_pat_in_fully_bound_structs)]
19#![warn(clippy::str_to_string)]
20#![warn(clippy::string_to_string)]
21#![warn(clippy::todo)]
22#![warn(clippy::try_err)]
23#![warn(clippy::undocumented_unsafe_blocks)]
24#![warn(clippy::unneeded_field_pattern)]
25#![allow(clippy::enum_glob_use)]
26#![allow(clippy::missing_errors_doc)]
27#![allow(clippy::missing_panics_doc)]
28#![allow(clippy::missing_safety_doc)]
29#![allow(clippy::module_name_repetitions)]
30#![allow(clippy::must_use_candidate)]
31#![allow(clippy::return_self_not_must_use)]
32
33pub mod config;
34pub mod error;
35pub mod parse;
36pub mod time;
37pub mod util;
38
39#[cfg(test)]
40pub use rstest_reuse;
41
42#[cfg(test)]
43mod tests {
44 use crate::config::Delimiter;
45 use crate::error::{ParseError, TryFromDurationError};
46 use crate::time::{Duration, Multiplier, TimeUnit};
47
48 #[test]
49 fn test_send() {
50 fn assert_send<T: Send>() {}
51 assert_send::<Delimiter>();
52
53 assert_send::<TimeUnit>();
54 assert_send::<Duration>();
55 assert_send::<Multiplier>();
56
57 assert_send::<ParseError>();
58 assert_send::<TryFromDurationError>();
59 }
60
61 #[test]
62 fn test_sync() {
63 fn assert_sync<T: Sync>() {}
64 assert_sync::<Delimiter>();
65
66 assert_sync::<TimeUnit>();
67 assert_sync::<Duration>();
68 assert_sync::<Multiplier>();
69
70 assert_sync::<ParseError>();
71 assert_sync::<TryFromDurationError>();
72 }
73}