roplat 0.2.0

roplat: just a robot operation system
Documentation
use std::cell::RefCell;
use std::collections::HashMap;

use pyo3::{Py, PyAny};

thread_local! {
    static OPAQUE_BUS: RefCell<HashMap<&'static str, Py<PyAny>>> = RefCell::new(HashMap::new());
}

/// 按类型名存入 Python opaque 对象。
///
/// 同名对象会被覆盖,通常用于跨语言节点间的单帧传递。
pub fn store_opaque(type_name: &'static str, obj: Py<PyAny>) {
    OPAQUE_BUS.with(|bus| {
        bus.borrow_mut().insert(type_name, obj);
    });
}

/// 取出并移除指定类型名对应的 Python opaque 对象。
pub fn take_opaque(type_name: &'static str) -> Option<Py<PyAny>> {
    OPAQUE_BUS.with(|bus| bus.borrow_mut().remove(type_name))
}