[−][src]Trait cpython::FromPyObject
FromPyObject is implemented by various types that can be extracted from a Python object.
Normal usage is through the PyObject::extract helper method:
let value = obj.extract::<TargetType>(py)?;
Each target type for this conversion supports a different Python objects as input.
Calls with an unsupported input object will result in an exception (usually a TypeError).
This trait is also used by the py_fn! and py_class! and py_argparse! macros
in order to translate from Python objects to the expected Rust parameter types.
For example, the parameter x in def method(self, x: i32) will use
impl FromPyObject for i32 to convert the input Python object into a Rust i32.
When these macros are used with reference parameters (x: &str), the trait
RefFromPyObject is used instead.
Required methods
Loading content...Implementations on Foreign Types
impl<'s, T> FromPyObject<'s> for Option<T> where
T: FromPyObject<'s>, [src]
T: FromPyObject<'s>,
If the python value is None, returns Option::None.
Otherwise, converts the python value to T and returns Some(T).
impl<'s> FromPyObject<'s> for bool[src]
fn extract(py: Python, obj: &'s PyObject) -> PyResult<Self>[src]
Converts a Python bool to a rust bool.
Fails with TypeError if the input is not a Python bool.
impl<'s> FromPyObject<'s> for i8[src]
impl<'s> FromPyObject<'s> for u8[src]
impl<'s> FromPyObject<'s> for i16[src]
impl<'s> FromPyObject<'s> for u16[src]
impl<'s> FromPyObject<'s> for i32[src]
impl<'s> FromPyObject<'s> for u32[src]
impl<'s> FromPyObject<'s> for i64[src]
impl<'s> FromPyObject<'s> for isize[src]
impl<'s> FromPyObject<'s> for usize[src]
impl<'s> FromPyObject<'s> for u64[src]
Converts Python integers to Rust integers.
Returns OverflowError if the input integer does not fit the Rust type; or TypeError if the input is not an integer.
impl<'s> FromPyObject<'s> for f64[src]
impl<'s> FromPyObject<'s> for f32[src]
impl<'s, T> FromPyObject<'s> for Vec<T> where
T: FromPyObject<'a>, [src]
T: FromPyObject<'a>,
Uses the sequence protocol and converts each individual element
via impl FromPyObject for T.
Note: when using --features nightly, a specialization of this impl
may use the buffer protocol to perform a more efficient bulk copy.
impl<'s> FromPyObject<'s> for Cow<'s, str>[src]
Allows extracting strings from Python objects.
Accepts Python str and unicode objects.
In Python 2.7, str is expected to be UTF-8 encoded.
Returns a UnicodeDecodeError if the input is not valid unicode
(containing unpaired surrogates, or a Python 2.7 byte string that is
not valid UTF-8).
impl<'s> FromPyObject<'s> for String[src]
Allows extracting strings from Python objects.
Accepts Python str and unicode objects.
In Python 2.7, str is expected to be UTF-8 encoded.
Returns a UnicodeDecodeError if the input is not valid unicode
(containing unpaired surrogates, or a Python 2.7 byte string that is
not valid UTF-8).
impl<'s> FromPyObject<'s> for Cow<'s, [u8]>[src]
For Python bytes, returns a reference to the existing immutable string data.
If the Python object is a single-dimensional buffer of format c or B (C: char or unsigned char),
returns an owned copy of the data in the buffer.
Otherwise, uses the sequence protocol and converts each individual element
via impl FromPyObject for u8.
impl<'s, A: FromPyObject<'s>> FromPyObject<'s> for (A,)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>> FromPyObject<'s> for (A, B)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>> FromPyObject<'s> for (A, B, C)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>, D: FromPyObject<'s>> FromPyObject<'s> for (A, B, C, D)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>, D: FromPyObject<'s>, E: FromPyObject<'s>> FromPyObject<'s> for (A, B, C, D, E)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>, D: FromPyObject<'s>, E: FromPyObject<'s>, F: FromPyObject<'s>> FromPyObject<'s> for (A, B, C, D, E, F)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>, D: FromPyObject<'s>, E: FromPyObject<'s>, F: FromPyObject<'s>, G: FromPyObject<'s>> FromPyObject<'s> for (A, B, C, D, E, F, G)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>, D: FromPyObject<'s>, E: FromPyObject<'s>, F: FromPyObject<'s>, G: FromPyObject<'s>, H: FromPyObject<'s>> FromPyObject<'s> for (A, B, C, D, E, F, G, H)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
impl<'s, A: FromPyObject<'s>, B: FromPyObject<'s>, C: FromPyObject<'s>, D: FromPyObject<'s>, E: FromPyObject<'s>, F: FromPyObject<'s>, G: FromPyObject<'s>, H: FromPyObject<'s>, I: FromPyObject<'s>> FromPyObject<'s> for (A, B, C, D, E, F, G, H, I)[src]
Converts a Python tuple to a Rust tuple.
Note: only accepts Python tuple (or derived classes);
other types are not accepted.
Implementors
impl<'s> FromPyObject<'s> for &'s AssertionError[src]
impl<'s> FromPyObject<'s> for &'s AttributeError[src]
impl<'s> FromPyObject<'s> for &'s BaseException[src]
impl<'s> FromPyObject<'s> for &'s BlockingIOError[src]
impl<'s> FromPyObject<'s> for &'s BrokenPipeError[src]
impl<'s> FromPyObject<'s> for &'s BufferError[src]
impl<'s> FromPyObject<'s> for &'s ChildProcessError[src]
impl<'s> FromPyObject<'s> for &'s ConnectionAbortedError[src]
impl<'s> FromPyObject<'s> for &'s ConnectionError[src]
impl<'s> FromPyObject<'s> for &'s ConnectionRefusedError[src]
impl<'s> FromPyObject<'s> for &'s ConnectionResetError[src]
impl<'s> FromPyObject<'s> for &'s EOFError[src]
impl<'s> FromPyObject<'s> for &'s EnvironmentError[src]
impl<'s> FromPyObject<'s> for &'s Exception[src]
impl<'s> FromPyObject<'s> for &'s FileExistsError[src]
impl<'s> FromPyObject<'s> for &'s FileNotFoundError[src]
impl<'s> FromPyObject<'s> for &'s FloatingPointError[src]
impl<'s> FromPyObject<'s> for &'s IOError[src]
impl<'s> FromPyObject<'s> for &'s ImportError[src]
impl<'s> FromPyObject<'s> for &'s IndexError[src]
impl<'s> FromPyObject<'s> for &'s InterruptedError[src]
impl<'s> FromPyObject<'s> for &'s IsADirectoryError[src]
impl<'s> FromPyObject<'s> for &'s KeyError[src]
impl<'s> FromPyObject<'s> for &'s KeyboardInterrupt[src]
impl<'s> FromPyObject<'s> for &'s LookupError[src]
impl<'s> FromPyObject<'s> for &'s MemoryError[src]
impl<'s> FromPyObject<'s> for &'s NameError[src]
impl<'s> FromPyObject<'s> for &'s NotADirectoryError[src]
impl<'s> FromPyObject<'s> for &'s NotImplementedError[src]
impl<'s> FromPyObject<'s> for &'s OSError[src]
impl<'s> FromPyObject<'s> for &'s OverflowError[src]
impl<'s> FromPyObject<'s> for &'s PermissionError[src]
impl<'s> FromPyObject<'s> for &'s ProcessLookupError[src]
impl<'s> FromPyObject<'s> for &'s ReferenceError[src]
impl<'s> FromPyObject<'s> for &'s RuntimeError[src]
impl<'s> FromPyObject<'s> for &'s SyntaxError[src]
impl<'s> FromPyObject<'s> for &'s SystemError[src]
impl<'s> FromPyObject<'s> for &'s SystemExit[src]
impl<'s> FromPyObject<'s> for &'s TimeoutError[src]
impl<'s> FromPyObject<'s> for &'s TypeError[src]
impl<'s> FromPyObject<'s> for &'s UnicodeDecodeError[src]
impl<'s> FromPyObject<'s> for &'s UnicodeEncodeError[src]
impl<'s> FromPyObject<'s> for &'s UnicodeTranslateError[src]
impl<'s> FromPyObject<'s> for &'s ValueError[src]
impl<'s> FromPyObject<'s> for &'s ZeroDivisionError[src]
impl<'s> FromPyObject<'s> for &'s PyBool[src]
impl<'s> FromPyObject<'s> for &'s PyBytes[src]
impl<'s> FromPyObject<'s> for &'s PyCapsule[src]
impl<'s> FromPyObject<'s> for &'s PyDict[src]
impl<'s> FromPyObject<'s> for &'s PyFloat[src]
impl<'s> FromPyObject<'s> for &'s PyLong[src]
impl<'s> FromPyObject<'s> for &'s PyList[src]
impl<'s> FromPyObject<'s> for &'s PyModule[src]
impl<'s> FromPyObject<'s> for &'s PyObject[src]
impl<'s> FromPyObject<'s> for &'s PySequence[src]
impl<'s> FromPyObject<'s> for &'s PySet[src]
impl<'s> FromPyObject<'s> for &'s PyTuple[src]
impl<'s> FromPyObject<'s> for &'s PyType[src]
impl<'s> FromPyObject<'s> for &'s PyString[src]
impl<'s> FromPyObject<'s> for AssertionError[src]
impl<'s> FromPyObject<'s> for AttributeError[src]
impl<'s> FromPyObject<'s> for BaseException[src]
impl<'s> FromPyObject<'s> for BlockingIOError[src]
impl<'s> FromPyObject<'s> for BrokenPipeError[src]
impl<'s> FromPyObject<'s> for BufferError[src]
impl<'s> FromPyObject<'s> for ChildProcessError[src]
impl<'s> FromPyObject<'s> for ConnectionAbortedError[src]
impl<'s> FromPyObject<'s> for ConnectionError[src]
impl<'s> FromPyObject<'s> for ConnectionRefusedError[src]
impl<'s> FromPyObject<'s> for ConnectionResetError[src]
impl<'s> FromPyObject<'s> for EOFError[src]
impl<'s> FromPyObject<'s> for EnvironmentError[src]
impl<'s> FromPyObject<'s> for Exception[src]
impl<'s> FromPyObject<'s> for FileExistsError[src]
impl<'s> FromPyObject<'s> for FileNotFoundError[src]
impl<'s> FromPyObject<'s> for FloatingPointError[src]
impl<'s> FromPyObject<'s> for IOError[src]
impl<'s> FromPyObject<'s> for ImportError[src]
impl<'s> FromPyObject<'s> for IndexError[src]
impl<'s> FromPyObject<'s> for InterruptedError[src]
impl<'s> FromPyObject<'s> for IsADirectoryError[src]
impl<'s> FromPyObject<'s> for KeyError[src]
impl<'s> FromPyObject<'s> for KeyboardInterrupt[src]
impl<'s> FromPyObject<'s> for LookupError[src]
impl<'s> FromPyObject<'s> for MemoryError[src]
impl<'s> FromPyObject<'s> for NameError[src]
impl<'s> FromPyObject<'s> for NotADirectoryError[src]
impl<'s> FromPyObject<'s> for NotImplementedError[src]
impl<'s> FromPyObject<'s> for OSError[src]
impl<'s> FromPyObject<'s> for OverflowError[src]
impl<'s> FromPyObject<'s> for PermissionError[src]
impl<'s> FromPyObject<'s> for ProcessLookupError[src]
impl<'s> FromPyObject<'s> for ReferenceError[src]
impl<'s> FromPyObject<'s> for RuntimeError[src]
impl<'s> FromPyObject<'s> for SyntaxError[src]
impl<'s> FromPyObject<'s> for SystemError[src]
impl<'s> FromPyObject<'s> for SystemExit[src]
impl<'s> FromPyObject<'s> for TimeoutError[src]
impl<'s> FromPyObject<'s> for TypeError[src]
impl<'s> FromPyObject<'s> for UnicodeDecodeError[src]
impl<'s> FromPyObject<'s> for UnicodeEncodeError[src]
impl<'s> FromPyObject<'s> for UnicodeTranslateError[src]
impl<'s> FromPyObject<'s> for ValueError[src]
impl<'s> FromPyObject<'s> for ZeroDivisionError[src]
impl<'s> FromPyObject<'s> for NoArgs[src]
fn extract(py: Python, obj: &'s PyObject) -> PyResult<Self>[src]
Returns Ok(NoArgs) if the input is an empty Python tuple.
Otherwise, returns an error.