pyo3/conversions/std/
cell.rs

1use std::cell::Cell;
2
3use crate::{
4    types::any::PyAnyMethods, Bound, FromPyObject, IntoPy, PyAny, PyObject, PyResult, Python,
5    ToPyObject,
6};
7
8impl<T: Copy + ToPyObject> ToPyObject for Cell<T> {
9    fn to_object(&self, py: Python<'_>) -> PyObject {
10        self.get().to_object(py)
11    }
12}
13
14impl<T: Copy + IntoPy<PyObject>> IntoPy<PyObject> for Cell<T> {
15    fn into_py(self, py: Python<'_>) -> PyObject {
16        self.get().into_py(py)
17    }
18}
19
20impl<'py, T: FromPyObject<'py>> FromPyObject<'py> for Cell<T> {
21    fn extract_bound(ob: &Bound<'py, PyAny>) -> PyResult<Self> {
22        ob.extract().map(Cell::new)
23    }
24}