diff options
author | Andy Finch <andyfinch7@gmail.com> | 2020-06-09 18:14:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-09 18:14:13 -0400 |
commit | 1b6a8051b9575db80cebc41873e00877e026e8fb (patch) | |
tree | 2bb1bc463226af4cf9eb1a7dcaf846bc9b1d1fa9 /core | |
parent | 15cfe9e6e5b20a3003a1d084030a5359c0fc5bab (diff) |
feat(core): add unregister op (#6214)
Diffstat (limited to 'core')
-rw-r--r-- | core/ops.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/core/ops.rs b/core/ops.rs index bd9d58283..eb995df6e 100644 --- a/core/ops.rs +++ b/core/ops.rs @@ -64,6 +64,11 @@ impl OpRegistry { pub fn get(&self, op_id: OpId) -> Option<Rc<OpDispatcher>> { self.dispatchers.get(op_id as usize).map(Rc::clone) } + + pub fn unregister_op(&mut self, name: &str) { + let id = self.name_to_id.remove(name).unwrap(); + drop(self.dispatchers.remove(id as usize)); + } } #[test] @@ -101,6 +106,10 @@ fn test_op_registry() { assert_eq!(c.load(atomic::Ordering::SeqCst), 1); assert!(op_registry.get(100).is_none()); + op_registry.unregister_op("test"); + expected.remove("test"); + assert_eq!(op_registry.name_to_id, expected); + assert!(op_registry.get(1).is_none()); } #[test] |