lumen_core/grad/
global.rs1use std::cell::Cell;
2
3thread_local! {
4 static GRAD_ENABLED: Cell<bool> = Cell::new(true);
5}
6
7pub fn set_grad_enabled(enabled: bool) {
8 GRAD_ENABLED.with(|c| c.set(enabled));
9}
10
11pub fn is_grad_enabled() -> bool {
12 GRAD_ENABLED.with(|c| c.get())
13}
14
15pub struct NoGradGuard {
16 prev: bool,
17}
18
19impl NoGradGuard {
20 pub fn new() -> Self {
21 let prev = is_grad_enabled();
22 set_grad_enabled(false);
23 Self { prev }
24 }
25}
26
27impl Drop for NoGradGuard {
28 fn drop(&mut self) {
29 set_grad_enabled(self.prev);
30 }
31}