pyany_serde/pyany_serde_impl/
bool_serde.rs

1use 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}