cs_utils/test/implements_sync.rs
1
2/// Test if an item implements `Sync` trait.
3///
4/// ### Examples
5///
6/// - Sync item:
7///
8/// ```
9/// // either "test" or "all" features must be enabled
10/// #[cfg(any(feature = "test", feature = "all"))]
11/// {
12/// use cs_utils::test::implements_sync;
13///
14/// // Sync is auto implemented
15/// struct TestStruct {}
16///
17/// // compiles fine
18/// implements_sync(TestStruct {});
19/// }
20/// ```
21///
22/// - Non-Sync item:
23///
24/// ```compile_fail
25/// // either "test" or "all" features must be enabled
26/// #[cfg(any(feature = "test", feature = "all"))]
27/// {
28/// use cs_utils::test::implements_sync;
29///
30/// struct TestStruct {
31/// // make it not Sync
32/// rc: std::rc::Rc<u8>,
33/// }
34///
35/// // does not compile
36/// implements_sync(TestStruct {});
37/// }
38/// ```
39pub fn implements_sync<T: Sync>(item: T) -> T {
40 return item;
41}