Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/debug_tree/src/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 1 kB image not shown  

Quelle  defer.rs   Sprache: unbekannt

 
use crate::TreeBuilder;

/// A deferred function called with an argument, `TreeBuilder`
pub struct DeferredFn<F: Fn(TreeBuilder) -> ()> {
    tree: Option<TreeBuilder>,
    action: Option<F>,
}

impl<F> DeferredFn<F>
where
    F: Fn(TreeBuilder) -> (),
{
    /// Create a new deferred function based on `tree`
    pub fn new(tree: TreeBuilder, action: F) -> Self {
        DeferredFn {
            tree: Some(tree),
            action: Some(action),
        }
    }
    /// Create an empty deferred function
    /// This does nothing when scope ends
    pub fn none() -> Self {
        DeferredFn {
            tree: None,
            action: None,
        }
    }

    /// Disables the deferred function
    /// This prevents the function from executing when the scope ends
    pub fn cancel(&mut self) {
        self.tree = None;
        self.action = None;
    }
}

impl<F> Drop for DeferredFn<F>
where
    F: Fn(TreeBuilder) -> (),
{
    fn drop(&mut self) {
        if let (Some(x), Some(action)) = (&self.tree, &self.action) {
            action(x.clone());
        }
    }
}

[ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ]