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}