borrowscope_runtime/tracker/
maybe_uninit.rs1use super::TRACKER;
4
5pub fn track_maybe_uninit_uninit<T>(
6 #[cfg_attr(not(feature = "track"), allow(unused_variables))] name: &str,
7 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
8 value: std::mem::MaybeUninit<T>,
9) -> std::mem::MaybeUninit<T> {
10 #[cfg(feature = "track")]
11 {
12 let mut tracker = TRACKER.lock();
13 tracker.record_maybe_uninit_new(name, false, location);
14 }
15 value
16}
17
18#[inline(always)]
20pub fn track_maybe_uninit_new<T>(
21 #[cfg_attr(not(feature = "track"), allow(unused_variables))] name: &str,
22 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
23 value: std::mem::MaybeUninit<T>,
24) -> std::mem::MaybeUninit<T> {
25 #[cfg(feature = "track")]
26 {
27 let mut tracker = TRACKER.lock();
28 tracker.record_maybe_uninit_new(name, true, location);
29 }
30 value
31}
32
33#[inline(always)]
35pub fn track_maybe_uninit_write<'a, T>(
36 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_id: &str,
37 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
38 value: &'a mut T,
39) -> &'a mut T {
40 #[cfg(feature = "track")]
41 {
42 let mut tracker = TRACKER.lock();
43 tracker.record_maybe_uninit_write(var_id, location);
44 }
45 value
46}
47
48#[inline(always)]
50pub fn track_maybe_uninit_assume_init<T>(
51 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_id: &str,
52 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
53 value: T,
54) -> T {
55 #[cfg(feature = "track")]
56 {
57 let mut tracker = TRACKER.lock();
58 tracker.record_maybe_uninit_assume_init(var_id, location);
59 }
60 value
61}
62
63#[inline(always)]
65pub fn track_maybe_uninit_assume_init_read<T>(
66 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_id: &str,
67 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
68 value: T,
69) -> T {
70 #[cfg(feature = "track")]
71 {
72 let mut tracker = TRACKER.lock();
73 tracker.record_maybe_uninit_assume_init_read(var_id, location);
74 }
75 value
76}
77
78#[inline(always)]
80pub fn track_maybe_uninit_assume_init_drop(
81 #[cfg_attr(not(feature = "track"), allow(unused_variables))] var_id: &str,
82 #[cfg_attr(not(feature = "track"), allow(unused_variables))] location: &str,
83) {
84 #[cfg(feature = "track")]
85 {
86 let mut tracker = TRACKER.lock();
87 tracker.record_maybe_uninit_assume_init_drop(var_id, location);
88 }
89}
90