1 use crate::TreeBuilder; 2 3 pub struct ScopedBranch { 4 state: Option<TreeBuilder>, 5 } 6 7 impl ScopedBranch { new(state: TreeBuilder) -> ScopedBranch8 pub fn new(state: TreeBuilder) -> ScopedBranch { 9 state.enter(); 10 ScopedBranch { state: Some(state) } 11 } none() -> ScopedBranch12 pub fn none() -> ScopedBranch { 13 ScopedBranch { state: None } 14 } release(&mut self)15 pub fn release(&mut self) { 16 if let Some(x) = &self.state { 17 x.exit(); 18 } 19 self.state = None; 20 } 21 } 22 impl Drop for ScopedBranch { drop(&mut self)23 fn drop(&mut self) { 24 self.release(); 25 } 26 } 27