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