pyany_serde/pyany_serde_impl/
bool_serde.rs1use pyo3::prelude::*;
2
3use crate::{
4 communication::{append_bool, append_bool_vec, retrieve_bool},
5 PyAnySerde,
6};
7
8#[derive(Clone)]
9pub struct BoolSerde {}
10
11impl PyAnySerde for BoolSerde {
12 fn append<'py>(
13 &mut self,
14 buf: &mut [u8],
15 offset: usize,
16 obj: &Bound<'py, PyAny>,
17 ) -> PyResult<usize> {
18 Ok(append_bool(buf, offset, obj.extract::<bool>()?))
19 }
20
21 fn append_vec<'py>(
22 &mut self,
23 v: &mut Vec<u8>,
24 _start_addr: Option<usize>,
25 obj: &Bound<'py, PyAny>,
26 ) -> PyResult<()> {
27 append_bool_vec(v, obj.extract::<bool>()?);
28 Ok(())
29 }
30
31 fn retrieve<'py>(
32 &mut self,
33 py: Python<'py>,
34 buf: &[u8],
35 offset: usize,
36 ) -> PyResult<(Bound<'py, PyAny>, usize)> {
37 let (val, offset) = retrieve_bool(buf, offset)?;
38 Ok((val.into_pyobject(py)?.to_owned().into_any(), offset))
39 }
40}