Available on crate feature
either
only.Expand description
Conversion to/from
either’s
Either
type to a union of two Python types.
Use of a generic sum type like either is common when you want to either accept one of two possible types as an argument or return one of two possible types from a function, without having to define a helper type manually yourself.
§Setup
To use this feature, add this to your Cargo.toml
:
[dependencies]
## change * to the version you want to use, ideally the latest.
either = "*"
pyo3 = { version = "0.22.6", features = ["either"] }
Note that you must use compatible versions of either and PyO3. The required either version may vary based on the version of PyO3.
§Example: Convert a int | str
to Either<i32, String>
.
use either::Either;
use pyo3::{Python, ToPyObject};
fn main() {
pyo3::prepare_freethreaded_python();
Python::with_gil(|py| {
// Create a string and an int in Python.
let py_str = "crab".to_object(py);
let py_int = 42.to_object(py);
// Now convert it to an Either<i32, String>.
let either_str: Either<i32, String> = py_str.extract(py).unwrap();
let either_int: Either<i32, String> = py_int.extract(py).unwrap();
});
}
either’s