Trait puff_rs::python::FromPyObject
source · Expand description
Extract a type from a Python object.
Normal usage is through the extract methods on Py and PyAny, which forward to this trait.
Examples
use pyo3::prelude::*;
use pyo3::types::PyString;
Python::with_gil(|py| {
let obj: Py<PyString> = PyString::new(py, "blah").into();
// Straight from an owned reference
let s: &str = obj.extract(py)?;
// Or from a borrowed reference
let obj: &PyString = obj.as_ref(py);
let s: &str = obj.extract()?;
})Note: depending on the implementation, the lifetime of the extracted result may
depend on the lifetime of the obj or the prepared variable.
For example, when extracting &str from a Python byte string, the resulting string slice will
point to the existing string data (lifetime: 'source).
On the other hand, when extracting &str from a Python Unicode string, the preparation step
will convert the string to UTF-8, and the resulting string slice will have lifetime 'prepared.
Since which case applies depends on the runtime type of the Python object,
both the obj and prepared variables must outlive the resulting string slice.
The trait’s conversion method takes a &PyAny argument but is called
FromPyObject for historical reasons.
Required Methods
Implementations on Foreign Types
sourceimpl<'source, K> FromPyObject<'source> for BTreeSet<K, Global>where
K: FromPyObject<'source> + Ord,
impl<'source, K> FromPyObject<'source> for BTreeSet<K, Global>where
K: FromPyObject<'source> + Ord,
sourceimpl<'source> FromPyObject<'source> for i64
impl<'source> FromPyObject<'source> for i64
sourceimpl<'source> FromPyObject<'source> for usize
impl<'source> FromPyObject<'source> for usize
sourceimpl<'source, K, S> FromPyObject<'source> for HashSet<K, S>where
K: FromPyObject<'source> + Eq + Hash,
S: BuildHasher + Default,
impl<'source, K, S> FromPyObject<'source> for HashSet<K, S>where
K: FromPyObject<'source> + Eq + Hash,
S: BuildHasher + Default,
sourceimpl<'a, T> FromPyObject<'a> for Option<T>where
T: FromPyObject<'a>,
impl<'a, T> FromPyObject<'a> for Option<T>where
T: FromPyObject<'a>,
sourceimpl<'s, T0, T1, T2, T3, T4, T5> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3, T4, T5> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
sourceimpl<'s, T0, T1, T2, T3, T4, T5, T6, T7, T8> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6, T7, T8)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
T7: FromPyObject<'s>,
T8: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3, T4, T5, T6, T7, T8> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6, T7, T8)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
T7: FromPyObject<'s>,
T8: FromPyObject<'s>,
sourceimpl<'s, T0, T1, T2, T3> FromPyObject<'s> for (T0, T1, T2, T3)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3> FromPyObject<'s> for (T0, T1, T2, T3)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
sourceimpl<'source> FromPyObject<'source> for f32
impl<'source> FromPyObject<'source> for f32
sourceimpl<'source> FromPyObject<'source> for f64
impl<'source> FromPyObject<'source> for f64
sourceimpl<'s, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
T7: FromPyObject<'s>,
T8: FromPyObject<'s>,
T9: FromPyObject<'s>,
T10: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
T7: FromPyObject<'s>,
T8: FromPyObject<'s>,
T9: FromPyObject<'s>,
T10: FromPyObject<'s>,
sourceimpl<'a, T> FromPyObject<'a> for Vec<T, Global>where
T: FromPyObject<'a>,
impl<'a, T> FromPyObject<'a> for Vec<T, Global>where
T: FromPyObject<'a>,
sourceimpl<'source> FromPyObject<'source> for u8
impl<'source> FromPyObject<'source> for u8
sourceimpl<'source> FromPyObject<'source> for isize
impl<'source> FromPyObject<'source> for isize
sourceimpl<'s, T0, T1, T2> FromPyObject<'s> for (T0, T1, T2)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
impl<'s, T0, T1, T2> FromPyObject<'s> for (T0, T1, T2)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
sourceimpl<'s, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
T7: FromPyObject<'s>,
T8: FromPyObject<'s>,
T9: FromPyObject<'s>,
T10: FromPyObject<'s>,
T11: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
T7: FromPyObject<'s>,
T8: FromPyObject<'s>,
T9: FromPyObject<'s>,
T10: FromPyObject<'s>,
T11: FromPyObject<'s>,
sourceimpl<'source> FromPyObject<'source> for &'source str
impl<'source> FromPyObject<'source> for &'source str
Allows extracting strings from Python objects.
Accepts Python str and unicode objects.
sourceimpl<'source> FromPyObject<'source> for u128
impl<'source> FromPyObject<'source> for u128
sourceimpl<'s, T0, T1, T2, T3, T4, T5, T6> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3, T4, T5, T6> FromPyObject<'s> for (T0, T1, T2, T3, T4, T5, T6)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
T5: FromPyObject<'s>,
T6: FromPyObject<'s>,
sourceimpl<'source> FromPyObject<'source> for i32
impl<'source> FromPyObject<'source> for i32
sourceimpl<'source, K, V> FromPyObject<'source> for BTreeMap<K, V, Global>where
K: FromPyObject<'source> + Ord,
V: FromPyObject<'source>,
impl<'source, K, V> FromPyObject<'source> for BTreeMap<K, V, Global>where
K: FromPyObject<'source> + Ord,
V: FromPyObject<'source>,
sourceimpl<'s, T0, T1> FromPyObject<'s> for (T0, T1)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
impl<'s, T0, T1> FromPyObject<'s> for (T0, T1)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
sourceimpl FromPyObject<'_> for String
impl FromPyObject<'_> for String
Allows extracting strings from Python objects.
Accepts Python str and unicode objects.
sourceimpl<'s, T0, T1, T2, T3, T4> FromPyObject<'s> for (T0, T1, T2, T3, T4)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
impl<'s, T0, T1, T2, T3, T4> FromPyObject<'s> for (T0, T1, T2, T3, T4)where
T0: FromPyObject<'s>,
T1: FromPyObject<'s>,
T2: FromPyObject<'s>,
T3: FromPyObject<'s>,
T4: FromPyObject<'s>,
sourceimpl<'source> FromPyObject<'source> for bool
impl<'source> FromPyObject<'source> for bool
Converts a Python bool to a Rust bool.
Fails with TypeError if the input is not a Python bool.