diff --git a/CHANGES.txt b/CHANGES.txt index a7f7c5c4..740e9578 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,10 @@ Changes ------- +0.2.4 (2018-01-xx) + +* Fix impl `FromPyObject` for `Py` + * Mark method that work with raw pointers as unsafe #95 diff --git a/src/instance.rs b/src/instance.rs index cba8db7e..8c0db0ee 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -328,13 +328,14 @@ impl<'a, T> std::convert::From<&'a mut T> for PyObject } } -impl<'a, T> FromPyObject<'a> for Py where T: ToPyPointer + FromPyObject<'a> +impl<'a, T> FromPyObject<'a> for Py + where T: ToPyPointer, &'a T: 'a + FromPyObject<'a> { /// Extracts `Self` from the source `PyObject`. fn extract(ob: &'a PyObjectRef) -> PyResult { unsafe { - ob.extract::().map(|val| Py::from_borrowed_ptr(val.as_ptr())) + ob.extract::<&T>().map(|val| Py::from_borrowed_ptr(val.as_ptr())) } } }