25 lines
590 B
Rust
25 lines
590 B
Rust
mod descriptor_pool;
|
|
mod error;
|
|
mod merging;
|
|
mod py_any_extras;
|
|
|
|
use descriptor_pool::create_cached_descriptor;
|
|
use error::Result;
|
|
use merging::merge_msg_into_pyobj;
|
|
use prost_reflect::DynamicMessage;
|
|
use pyo3::prelude::*;
|
|
|
|
#[pyfunction]
|
|
fn deserialize(obj: &PyAny, buf: &[u8]) -> Result<()> {
|
|
let desc = create_cached_descriptor(obj)?;
|
|
let msg = DynamicMessage::decode(desc, buf)?;
|
|
merge_msg_into_pyobj(obj, msg)?;
|
|
Ok(())
|
|
}
|
|
|
|
#[pymodule]
|
|
fn betterproto_extras(_py: Python, m: &PyModule) -> PyResult<()> {
|
|
m.add_function(wrap_pyfunction!(deserialize, m)?)?;
|
|
Ok(())
|
|
}
|