ci: updates for Rust 1.79 (#4244)
* ci: updates for Rust 1.79 * ci: fix beta clippy * ci: fix `dead_code` warning on nightly
This commit is contained in:
parent
f66124a79b
commit
5749a08b63
|
@ -172,7 +172,7 @@ used_underscore_binding = "warn"
|
||||||
[workspace.lints.rust]
|
[workspace.lints.rust]
|
||||||
elided_lifetimes_in_paths = "warn"
|
elided_lifetimes_in_paths = "warn"
|
||||||
invalid_doc_attributes = "warn"
|
invalid_doc_attributes = "warn"
|
||||||
rust_2018_idioms = "warn"
|
rust_2018_idioms = { level = "warn", priority = -1 }
|
||||||
rust_2021_prelude_collisions = "warn"
|
rust_2021_prelude_collisions = "warn"
|
||||||
unused_lifetimes = "warn"
|
unused_lifetimes = "warn"
|
||||||
|
|
||||||
|
|
|
@ -959,11 +959,11 @@ impl CrossCompileEnvVars {
|
||||||
///
|
///
|
||||||
/// This function relies on PyO3 cross-compiling environment variables:
|
/// This function relies on PyO3 cross-compiling environment variables:
|
||||||
///
|
///
|
||||||
/// * `PYO3_CROSS`: If present, forces PyO3 to configure as a cross-compilation.
|
/// * `PYO3_CROSS`: If present, forces PyO3 to configure as a cross-compilation.
|
||||||
/// * `PYO3_CROSS_LIB_DIR`: If present, must be set to the directory containing
|
/// * `PYO3_CROSS_LIB_DIR`: If present, must be set to the directory containing
|
||||||
/// the target's libpython DSO and the associated `_sysconfigdata*.py` file for
|
/// the target's libpython DSO and the associated `_sysconfigdata*.py` file for
|
||||||
/// Unix-like targets, or the Python DLL import libraries for the Windows target.
|
/// Unix-like targets, or the Python DLL import libraries for the Windows target.
|
||||||
/// * `PYO3_CROSS_PYTHON_VERSION`: Major and minor version (e.g. 3.9) of the target Python
|
/// * `PYO3_CROSS_PYTHON_VERSION`: Major and minor version (e.g. 3.9) of the target Python
|
||||||
/// installation. This variable is only needed if PyO3 cannnot determine the version to target
|
/// installation. This variable is only needed if PyO3 cannnot determine the version to target
|
||||||
/// from `abi3-py3*` features, or if there are multiple versions of Python present in
|
/// from `abi3-py3*` features, or if there are multiple versions of Python present in
|
||||||
/// `PYO3_CROSS_LIB_DIR`.
|
/// `PYO3_CROSS_LIB_DIR`.
|
||||||
|
@ -1056,7 +1056,7 @@ impl BuildFlags {
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|flag| {
|
.filter(|flag| {
|
||||||
config_map
|
config_map
|
||||||
.get_value(&flag.to_string())
|
.get_value(flag.to_string())
|
||||||
.map_or(false, |value| value == "1")
|
.map_or(false, |value| value == "1")
|
||||||
})
|
})
|
||||||
.cloned()
|
.cloned()
|
||||||
|
|
|
@ -180,6 +180,7 @@ macro_rules! import_exception_bound {
|
||||||
/// * `name` is the name of the new exception type.
|
/// * `name` is the name of the new exception type.
|
||||||
/// * `base` is the base class of `MyError`, usually [`PyException`].
|
/// * `base` is the base class of `MyError`, usually [`PyException`].
|
||||||
/// * `doc` (optional) is the docstring visible to users (with `.__doc__` and `help()`) and
|
/// * `doc` (optional) is the docstring visible to users (with `.__doc__` and `help()`) and
|
||||||
|
///
|
||||||
/// accompanies your error type in your crate's documentation.
|
/// accompanies your error type in your crate's documentation.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
|
|
@ -13,11 +13,10 @@
|
||||||
//! The functions in this module lack individual safety documentation, but
|
//! The functions in this module lack individual safety documentation, but
|
||||||
//! generally the following apply:
|
//! generally the following apply:
|
||||||
//! - Pointer arguments have to point to a valid Python object of the correct type,
|
//! - Pointer arguments have to point to a valid Python object of the correct type,
|
||||||
//! although null pointers are sometimes valid input.
|
//! although null pointers are sometimes valid input.
|
||||||
//! - The vast majority can only be used safely while the GIL is held.
|
//! - The vast majority can only be used safely while the GIL is held.
|
||||||
//! - Some functions have additional safety requirements, consult the
|
//! - Some functions have additional safety requirements, consult the
|
||||||
//! [Python/C API Reference Manual][capi]
|
//! [Python/C API Reference Manual][capi] for more information.
|
||||||
//! for more information.
|
|
||||||
//!
|
//!
|
||||||
//! [capi]: https://docs.python.org/3/c-api/index.html
|
//! [capi]: https://docs.python.org/3/c-api/index.html
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,7 @@ impl PyClassWeakRef for PyClassDummySlot {
|
||||||
///
|
///
|
||||||
/// `#[pyclass(dict)]` automatically adds this.
|
/// `#[pyclass(dict)]` automatically adds this.
|
||||||
#[repr(transparent)]
|
#[repr(transparent)]
|
||||||
|
#[allow(dead_code)] // These are constructed in INIT and used by the macro code
|
||||||
pub struct PyClassDictSlot(*mut ffi::PyObject);
|
pub struct PyClassDictSlot(*mut ffi::PyObject);
|
||||||
|
|
||||||
impl PyClassDict for PyClassDictSlot {
|
impl PyClassDict for PyClassDictSlot {
|
||||||
|
@ -93,6 +94,7 @@ impl PyClassDict for PyClassDictSlot {
|
||||||
///
|
///
|
||||||
/// `#[pyclass(weakref)]` automatically adds this.
|
/// `#[pyclass(weakref)]` automatically adds this.
|
||||||
#[repr(transparent)]
|
#[repr(transparent)]
|
||||||
|
#[allow(dead_code)] // These are constructed in INIT and used by the macro code
|
||||||
pub struct PyClassWeakRefSlot(*mut ffi::PyObject);
|
pub struct PyClassWeakRefSlot(*mut ffi::PyObject);
|
||||||
|
|
||||||
impl PyClassWeakRef for PyClassWeakRefSlot {
|
impl PyClassWeakRef for PyClassWeakRefSlot {
|
||||||
|
|
|
@ -730,10 +730,12 @@ impl<T> IntoPy<PyObject> for Borrowed<'_, '_, T> {
|
||||||
/// Instead, call one of its methods to access the inner object:
|
/// Instead, call one of its methods to access the inner object:
|
||||||
/// - [`Py::bind`] or [`Py::into_bound`], to borrow a GIL-bound reference to the contained object.
|
/// - [`Py::bind`] or [`Py::into_bound`], to borrow a GIL-bound reference to the contained object.
|
||||||
/// - [`Py::borrow`], [`Py::try_borrow`], [`Py::borrow_mut`], or [`Py::try_borrow_mut`],
|
/// - [`Py::borrow`], [`Py::try_borrow`], [`Py::borrow_mut`], or [`Py::try_borrow_mut`],
|
||||||
|
///
|
||||||
/// to get a (mutable) reference to a contained pyclass, using a scheme similar to std's [`RefCell`].
|
/// to get a (mutable) reference to a contained pyclass, using a scheme similar to std's [`RefCell`].
|
||||||
/// See the [guide entry](https://pyo3.rs/latest/class.html#bound-and-interior-mutability)
|
/// See the [guide entry](https://pyo3.rs/latest/class.html#bound-and-interior-mutability)
|
||||||
/// for more information.
|
/// for more information.
|
||||||
/// - You can call methods directly on `Py` with [`Py::call_bound`], [`Py::call_method_bound`] and friends.
|
/// - You can call methods directly on `Py` with [`Py::call_bound`], [`Py::call_method_bound`] and friends.
|
||||||
|
///
|
||||||
/// These require passing in the [`Python<'py>`](crate::Python) token but are otherwise similar to the corresponding
|
/// These require passing in the [`Python<'py>`](crate::Python) token but are otherwise similar to the corresponding
|
||||||
/// methods on [`PyAny`].
|
/// methods on [`PyAny`].
|
||||||
///
|
///
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
//! It also supports this pattern that many extension modules employ:
|
//! It also supports this pattern that many extension modules employ:
|
||||||
//! - Drop the GIL, so that other Python threads can acquire it and make progress themselves
|
//! - Drop the GIL, so that other Python threads can acquire it and make progress themselves
|
||||||
//! - Do something independently of the Python interpreter, like IO, a long running calculation or
|
//! - Do something independently of the Python interpreter, like IO, a long running calculation or
|
||||||
//! awaiting a future
|
//! awaiting a future
|
||||||
//! - Once that is done, reacquire the GIL
|
//! - Once that is done, reacquire the GIL
|
||||||
//!
|
//!
|
||||||
//! That API is provided by [`Python::allow_threads`] and enforced via the [`Ungil`] bound on the
|
//! That API is provided by [`Python::allow_threads`] and enforced via the [`Ungil`] bound on the
|
||||||
|
@ -308,9 +308,9 @@ pub use nightly::Ungil;
|
||||||
/// It serves three main purposes:
|
/// It serves three main purposes:
|
||||||
/// - It provides a global API for the Python interpreter, such as [`Python::eval_bound`].
|
/// - It provides a global API for the Python interpreter, such as [`Python::eval_bound`].
|
||||||
/// - It can be passed to functions that require a proof of holding the GIL, such as
|
/// - It can be passed to functions that require a proof of holding the GIL, such as
|
||||||
/// [`Py::clone_ref`].
|
/// [`Py::clone_ref`].
|
||||||
/// - Its lifetime represents the scope of holding the GIL which can be used to create Rust
|
/// - Its lifetime represents the scope of holding the GIL which can be used to create Rust
|
||||||
/// references that are bound to it, such as `&`[`PyAny`].
|
/// references that are bound to it, such as `&`[`PyAny`].
|
||||||
///
|
///
|
||||||
/// Note that there are some caveats to using it that you might need to be aware of. See the
|
/// Note that there are some caveats to using it that you might need to be aware of. See the
|
||||||
/// [Deadlocks](#deadlocks) and [Releasing and freeing memory](#releasing-and-freeing-memory)
|
/// [Deadlocks](#deadlocks) and [Releasing and freeing memory](#releasing-and-freeing-memory)
|
||||||
|
@ -320,11 +320,11 @@ pub use nightly::Ungil;
|
||||||
///
|
///
|
||||||
/// The following are the recommended ways to obtain a [`Python`] token, in order of preference:
|
/// The following are the recommended ways to obtain a [`Python`] token, in order of preference:
|
||||||
/// - In a function or method annotated with [`#[pyfunction]`](crate::pyfunction) or [`#[pymethods]`](crate::pymethods) you can declare it
|
/// - In a function or method annotated with [`#[pyfunction]`](crate::pyfunction) or [`#[pymethods]`](crate::pymethods) you can declare it
|
||||||
/// as a parameter, and PyO3 will pass in the token when Python code calls it.
|
/// as a parameter, and PyO3 will pass in the token when Python code calls it.
|
||||||
/// - If you already have something with a lifetime bound to the GIL, such as `&`[`PyAny`], you can
|
/// - If you already have something with a lifetime bound to the GIL, such as `&`[`PyAny`], you can
|
||||||
/// use its `.py()` method to get a token.
|
/// use its `.py()` method to get a token.
|
||||||
/// - When you need to acquire the GIL yourself, such as when calling Python code from Rust, you
|
/// - When you need to acquire the GIL yourself, such as when calling Python code from Rust, you
|
||||||
/// should call [`Python::with_gil`] to do that and pass your code as a closure to it.
|
/// should call [`Python::with_gil`] to do that and pass your code as a closure to it.
|
||||||
///
|
///
|
||||||
/// # Deadlocks
|
/// # Deadlocks
|
||||||
///
|
///
|
||||||
|
@ -1157,12 +1157,12 @@ impl<'unbound> Python<'unbound> {
|
||||||
/// # Safety
|
/// # Safety
|
||||||
///
|
///
|
||||||
/// - This token and any borrowed Python references derived from it can only be safely used
|
/// - This token and any borrowed Python references derived from it can only be safely used
|
||||||
/// whilst the currently executing thread is actually holding the GIL.
|
/// whilst the currently executing thread is actually holding the GIL.
|
||||||
/// - This function creates a token with an *unbounded* lifetime. Safe code can assume that
|
/// - This function creates a token with an *unbounded* lifetime. Safe code can assume that
|
||||||
/// holding a `Python<'py>` token means the GIL is and stays acquired for the lifetime `'py`.
|
/// holding a `Python<'py>` token means the GIL is and stays acquired for the lifetime `'py`.
|
||||||
/// If you let it or borrowed Python references escape to safe code you are
|
/// If you let it or borrowed Python references escape to safe code you are
|
||||||
/// responsible for bounding the lifetime `'unbound` appropriately. For more on unbounded
|
/// responsible for bounding the lifetime `'unbound` appropriately. For more on unbounded
|
||||||
/// lifetimes, see the [nomicon].
|
/// lifetimes, see the [nomicon].
|
||||||
///
|
///
|
||||||
/// [nomicon]: https://doc.rust-lang.org/nomicon/unbounded-lifetimes.html
|
/// [nomicon]: https://doc.rust-lang.org/nomicon/unbounded-lifetimes.html
|
||||||
#[inline]
|
#[inline]
|
||||||
|
|
|
@ -8,14 +8,14 @@
|
||||||
//! pattern. This requires that PyO3 enforces the borrowing rules and it has two mechanisms for
|
//! pattern. This requires that PyO3 enforces the borrowing rules and it has two mechanisms for
|
||||||
//! doing so:
|
//! doing so:
|
||||||
//! - Statically it can enforce threadsafe access with the [`Python<'py>`](crate::Python) token.
|
//! - Statically it can enforce threadsafe access with the [`Python<'py>`](crate::Python) token.
|
||||||
//! All Rust code holding that token, or anything derived from it, can assume that they have
|
//! All Rust code holding that token, or anything derived from it, can assume that they have
|
||||||
//! safe access to the Python interpreter's state. For this reason all the native Python objects
|
//! safe access to the Python interpreter's state. For this reason all the native Python objects
|
||||||
//! can be mutated through shared references.
|
//! can be mutated through shared references.
|
||||||
//! - However, methods and functions in Rust usually *do* need `&mut` references. While PyO3 can
|
//! - However, methods and functions in Rust usually *do* need `&mut` references. While PyO3 can
|
||||||
//! use the [`Python<'py>`](crate::Python) token to guarantee thread-safe access to them, it cannot
|
//! use the [`Python<'py>`](crate::Python) token to guarantee thread-safe access to them, it cannot
|
||||||
//! statically guarantee uniqueness of `&mut` references. As such those references have to be tracked
|
//! statically guarantee uniqueness of `&mut` references. As such those references have to be tracked
|
||||||
//! dynamically at runtime, using `PyCell` and the other types defined in this module. This works
|
//! dynamically at runtime, using `PyCell` and the other types defined in this module. This works
|
||||||
//! similar to std's [`RefCell`](std::cell::RefCell) type.
|
//! similar to std's [`RefCell`](std::cell::RefCell) type.
|
||||||
//!
|
//!
|
||||||
//! # When *not* to use PyCell
|
//! # When *not* to use PyCell
|
||||||
//!
|
//!
|
||||||
|
|
|
@ -67,8 +67,8 @@ unsafe impl<T> Sync for GILProtected<T> where T: Send {}
|
||||||
/// 2) If the initialization function `f` provided to `get_or_init` (or `get_or_try_init`)
|
/// 2) If the initialization function `f` provided to `get_or_init` (or `get_or_try_init`)
|
||||||
/// temporarily releases the GIL (e.g. by calling `Python::import`) then it is possible
|
/// temporarily releases the GIL (e.g. by calling `Python::import`) then it is possible
|
||||||
/// for a second thread to also begin initializing the `GITOnceCell`. Even when this
|
/// for a second thread to also begin initializing the `GITOnceCell`. Even when this
|
||||||
/// happens `GILOnceCell` guarantees that only **one** write to the cell ever occurs
|
/// happens `GILOnceCell` guarantees that only **one** write to the cell ever occurs -
|
||||||
/// - this is treated as a race, other threads will discard the value they compute and
|
/// this is treated as a race, other threads will discard the value they compute and
|
||||||
/// return the result of the first complete computation.
|
/// return the result of the first complete computation.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
|
|
@ -26,13 +26,13 @@ use std::os::raw::c_int;
|
||||||
/// with the other [native Python types](crate::types):
|
/// with the other [native Python types](crate::types):
|
||||||
///
|
///
|
||||||
/// - It can only be obtained and used while the GIL is held,
|
/// - It can only be obtained and used while the GIL is held,
|
||||||
/// therefore its API does not require a [`Python<'py>`](crate::Python) token.
|
/// therefore its API does not require a [`Python<'py>`](crate::Python) token.
|
||||||
/// - It can't be used in situations where the GIL is temporarily released,
|
/// - It can't be used in situations where the GIL is temporarily released,
|
||||||
/// such as [`Python::allow_threads`](crate::Python::allow_threads)'s closure.
|
/// such as [`Python::allow_threads`](crate::Python::allow_threads)'s closure.
|
||||||
/// - The underlying Python object, if mutable, can be mutated through any reference.
|
/// - The underlying Python object, if mutable, can be mutated through any reference.
|
||||||
/// - It can be converted to the GIL-independent [`Py`]`<`[`PyAny`]`>`,
|
/// - It can be converted to the GIL-independent [`Py`]`<`[`PyAny`]`>`,
|
||||||
/// allowing it to outlive the GIL scope. However, using [`Py`]`<`[`PyAny`]`>`'s API
|
/// allowing it to outlive the GIL scope. However, using [`Py`]`<`[`PyAny`]`>`'s API
|
||||||
/// *does* require a [`Python<'py>`](crate::Python) token.
|
/// *does* require a [`Python<'py>`](crate::Python) token.
|
||||||
///
|
///
|
||||||
/// It can be cast to a concrete type with PyAny::downcast (for native Python types only)
|
/// It can be cast to a concrete type with PyAny::downcast (for native Python types only)
|
||||||
/// and FromPyObject::extract. See their documentation for more information.
|
/// and FromPyObject::extract. See their documentation for more information.
|
||||||
|
|
|
@ -149,11 +149,11 @@ impl PyByteArray {
|
||||||
///
|
///
|
||||||
/// These mutations may occur in Python code as well as from Rust:
|
/// These mutations may occur in Python code as well as from Rust:
|
||||||
/// - Calling methods like [`PyByteArray::as_bytes_mut`] and [`PyByteArray::resize`] will
|
/// - Calling methods like [`PyByteArray::as_bytes_mut`] and [`PyByteArray::resize`] will
|
||||||
/// invalidate the slice.
|
/// invalidate the slice.
|
||||||
/// - Actions like dropping objects or raising exceptions can invoke `__del__`methods or signal
|
/// - Actions like dropping objects or raising exceptions can invoke `__del__`methods or signal
|
||||||
/// handlers, which may execute arbitrary Python code. This means that if Python code has a
|
/// handlers, which may execute arbitrary Python code. This means that if Python code has a
|
||||||
/// reference to the `bytearray` you cannot safely use the vast majority of PyO3's API whilst
|
/// reference to the `bytearray` you cannot safely use the vast majority of PyO3's API whilst
|
||||||
/// using the slice.
|
/// using the slice.
|
||||||
///
|
///
|
||||||
/// As a result, this slice should only be used for short-lived operations without executing any
|
/// As a result, this slice should only be used for short-lived operations without executing any
|
||||||
/// Python code, such as copying into a Vec.
|
/// Python code, such as copying into a Vec.
|
||||||
|
@ -311,11 +311,11 @@ pub trait PyByteArrayMethods<'py>: crate::sealed::Sealed {
|
||||||
///
|
///
|
||||||
/// These mutations may occur in Python code as well as from Rust:
|
/// These mutations may occur in Python code as well as from Rust:
|
||||||
/// - Calling methods like [`PyByteArrayMethods::as_bytes_mut`] and [`PyByteArrayMethods::resize`] will
|
/// - Calling methods like [`PyByteArrayMethods::as_bytes_mut`] and [`PyByteArrayMethods::resize`] will
|
||||||
/// invalidate the slice.
|
/// invalidate the slice.
|
||||||
/// - Actions like dropping objects or raising exceptions can invoke `__del__`methods or signal
|
/// - Actions like dropping objects or raising exceptions can invoke `__del__`methods or signal
|
||||||
/// handlers, which may execute arbitrary Python code. This means that if Python code has a
|
/// handlers, which may execute arbitrary Python code. This means that if Python code has a
|
||||||
/// reference to the `bytearray` you cannot safely use the vast majority of PyO3's API whilst
|
/// reference to the `bytearray` you cannot safely use the vast majority of PyO3's API whilst
|
||||||
/// using the slice.
|
/// using the slice.
|
||||||
///
|
///
|
||||||
/// As a result, this slice should only be used for short-lived operations without executing any
|
/// As a result, this slice should only be used for short-lived operations without executing any
|
||||||
/// Python code, such as copying into a Vec.
|
/// Python code, such as copying into a Vec.
|
||||||
|
|
|
@ -851,7 +851,7 @@ mod tests {
|
||||||
#[cfg(not(any(PyPy, GraalPy)))]
|
#[cfg(not(any(PyPy, GraalPy)))]
|
||||||
fn test_from_sequence() {
|
fn test_from_sequence() {
|
||||||
Python::with_gil(|py| {
|
Python::with_gil(|py| {
|
||||||
let items = PyList::new_bound(py, &vec![("a", 1), ("b", 2)]);
|
let items = PyList::new_bound(py, vec![("a", 1), ("b", 2)]);
|
||||||
let dict = PyDict::from_sequence_bound(&items).unwrap();
|
let dict = PyDict::from_sequence_bound(&items).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
1,
|
1,
|
||||||
|
@ -882,7 +882,7 @@ mod tests {
|
||||||
#[cfg(not(any(PyPy, GraalPy)))]
|
#[cfg(not(any(PyPy, GraalPy)))]
|
||||||
fn test_from_sequence_err() {
|
fn test_from_sequence_err() {
|
||||||
Python::with_gil(|py| {
|
Python::with_gil(|py| {
|
||||||
let items = PyList::new_bound(py, &vec!["a", "b"]);
|
let items = PyList::new_bound(py, vec!["a", "b"]);
|
||||||
assert!(PyDict::from_sequence_bound(&items).is_err());
|
assert!(PyDict::from_sequence_bound(&items).is_err());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,7 +280,7 @@ fn test_generic_list_set() {
|
||||||
.items
|
.items
|
||||||
.iter()
|
.iter()
|
||||||
.zip(&[1u32, 2, 3])
|
.zip(&[1u32, 2, 3])
|
||||||
.all(|(a, b)| a.bind(py).eq(&b.into_py(py)).unwrap()));
|
.all(|(a, b)| a.bind(py).eq(b.into_py(py)).unwrap()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,10 @@ error[E0277]: the trait bound `CancelHandle: PyFunctionArgument<'_, '_>` is not
|
||||||
| ^^^^ the trait `PyClass` is not implemented for `CancelHandle`, which is required by `CancelHandle: PyFunctionArgument<'_, '_>`
|
| ^^^^ the trait `PyClass` is not implemented for `CancelHandle`, which is required by `CancelHandle: PyFunctionArgument<'_, '_>`
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `PyFunctionArgument<'a, 'py>`:
|
= help: the following other types implement trait `PyFunctionArgument<'a, 'py>`:
|
||||||
Option<&'a pyo3::Bound<'py, T>>
|
&'a mut pyo3::coroutine::Coroutine
|
||||||
&'a pyo3::Bound<'py, T>
|
&'a pyo3::Bound<'py, T>
|
||||||
&'a pyo3::coroutine::Coroutine
|
&'a pyo3::coroutine::Coroutine
|
||||||
&'a mut pyo3::coroutine::Coroutine
|
Option<&'a pyo3::Bound<'py, T>>
|
||||||
= note: required for `CancelHandle` to implement `FromPyObject<'_>`
|
= note: required for `CancelHandle` to implement `FromPyObject<'_>`
|
||||||
= note: required for `CancelHandle` to implement `FromPyObjectBound<'_, '_>`
|
= note: required for `CancelHandle` to implement `FromPyObjectBound<'_, '_>`
|
||||||
= note: required for `CancelHandle` to implement `PyFunctionArgument<'_, '_>`
|
= note: required for `CancelHandle` to implement `PyFunctionArgument<'_, '_>`
|
||||||
|
@ -68,10 +68,10 @@ error[E0277]: the trait bound `CancelHandle: PyFunctionArgument<'_, '_>` is not
|
||||||
| ^^^^ the trait `Clone` is not implemented for `CancelHandle`, which is required by `CancelHandle: PyFunctionArgument<'_, '_>`
|
| ^^^^ the trait `Clone` is not implemented for `CancelHandle`, which is required by `CancelHandle: PyFunctionArgument<'_, '_>`
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `PyFunctionArgument<'a, 'py>`:
|
= help: the following other types implement trait `PyFunctionArgument<'a, 'py>`:
|
||||||
Option<&'a pyo3::Bound<'py, T>>
|
&'a mut pyo3::coroutine::Coroutine
|
||||||
&'a pyo3::Bound<'py, T>
|
&'a pyo3::Bound<'py, T>
|
||||||
&'a pyo3::coroutine::Coroutine
|
&'a pyo3::coroutine::Coroutine
|
||||||
&'a mut pyo3::coroutine::Coroutine
|
Option<&'a pyo3::Bound<'py, T>>
|
||||||
= note: required for `CancelHandle` to implement `FromPyObject<'_>`
|
= note: required for `CancelHandle` to implement `FromPyObject<'_>`
|
||||||
= note: required for `CancelHandle` to implement `FromPyObjectBound<'_, '_>`
|
= note: required for `CancelHandle` to implement `FromPyObjectBound<'_, '_>`
|
||||||
= note: required for `CancelHandle` to implement `PyFunctionArgument<'_, '_>`
|
= note: required for `CancelHandle` to implement `PyFunctionArgument<'_, '_>`
|
||||||
|
|
|
@ -54,10 +54,10 @@ error[E0277]: the trait bound `&str: From<BoundRef<'_, '_, pyo3::prelude::PyModu
|
||||||
| ^ the trait `From<BoundRef<'_, '_, pyo3::prelude::PyModule>>` is not implemented for `&str`, which is required by `BoundRef<'_, '_, pyo3::prelude::PyModule>: Into<_>`
|
| ^ the trait `From<BoundRef<'_, '_, pyo3::prelude::PyModule>>` is not implemented for `&str`, which is required by `BoundRef<'_, '_, pyo3::prelude::PyModule>: Into<_>`
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `From<T>`:
|
= help: the following other types implement trait `From<T>`:
|
||||||
<String as From<char>>
|
<String as From<&String>>
|
||||||
|
<String as From<&mut str>>
|
||||||
|
<String as From<&str>>
|
||||||
<String as From<Box<str>>>
|
<String as From<Box<str>>>
|
||||||
<String as From<Cow<'a, str>>>
|
<String as From<Cow<'a, str>>>
|
||||||
<String as From<&str>>
|
<String as From<char>>
|
||||||
<String as From<&mut str>>
|
|
||||||
<String as From<&String>>
|
|
||||||
= note: required for `BoundRef<'_, '_, pyo3::prelude::PyModule>` to implement `Into<&str>`
|
= note: required for `BoundRef<'_, '_, pyo3::prelude::PyModule>` to implement `Into<&str>`
|
||||||
|
|
|
@ -6,9 +6,9 @@ error[E0277]: the trait bound `i32: TryFrom<BoundRef<'_, '_, MyClass>>` is not s
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `From<T>`:
|
= help: the following other types implement trait `From<T>`:
|
||||||
<i32 as From<bool>>
|
<i32 as From<bool>>
|
||||||
<i32 as From<i8>>
|
|
||||||
<i32 as From<i16>>
|
<i32 as From<i16>>
|
||||||
<i32 as From<u8>>
|
<i32 as From<i8>>
|
||||||
<i32 as From<u16>>
|
<i32 as From<u16>>
|
||||||
|
<i32 as From<u8>>
|
||||||
= note: required for `BoundRef<'_, '_, MyClass>` to implement `Into<i32>`
|
= note: required for `BoundRef<'_, '_, MyClass>` to implement `Into<i32>`
|
||||||
= note: required for `i32` to implement `TryFrom<BoundRef<'_, '_, MyClass>>`
|
= note: required for `i32` to implement `TryFrom<BoundRef<'_, '_, MyClass>>`
|
||||||
|
|
|
@ -187,8 +187,8 @@ error[E0277]: the trait bound `i32: From<BoundRef<'_, '_, PyType>>` is not satis
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `From<T>`:
|
= help: the following other types implement trait `From<T>`:
|
||||||
<i32 as From<bool>>
|
<i32 as From<bool>>
|
||||||
<i32 as From<i8>>
|
|
||||||
<i32 as From<i16>>
|
<i32 as From<i16>>
|
||||||
<i32 as From<u8>>
|
<i32 as From<i8>>
|
||||||
<i32 as From<u16>>
|
<i32 as From<u16>>
|
||||||
|
<i32 as From<u8>>
|
||||||
= note: required for `BoundRef<'_, '_, PyType>` to implement `Into<i32>`
|
= note: required for `BoundRef<'_, '_, PyType>` to implement `Into<i32>`
|
||||||
|
|
|
@ -16,14 +16,14 @@ error[E0277]: the trait bound `TwoNew: PyTypeInfo` is not satisfied
|
||||||
| ^^^^^^ the trait `PyTypeInfo` is not implemented for `TwoNew`
|
| ^^^^^^ the trait `PyTypeInfo` is not implemented for `TwoNew`
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `PyTypeInfo`:
|
= help: the following other types implement trait `PyTypeInfo`:
|
||||||
|
CancelledError
|
||||||
|
IncompleteReadError
|
||||||
|
InvalidStateError
|
||||||
|
LimitOverrunError
|
||||||
|
PanicException
|
||||||
PyAny
|
PyAny
|
||||||
PyBool
|
PyArithmeticError
|
||||||
PyByteArray
|
PyAssertionError
|
||||||
PyBytes
|
|
||||||
PyCapsule
|
|
||||||
PyCode
|
|
||||||
PyComplex
|
|
||||||
PyDate
|
|
||||||
and $N others
|
and $N others
|
||||||
|
|
||||||
error[E0592]: duplicate definitions with name `__pymethod___new____`
|
error[E0592]: duplicate definitions with name `__pymethod___new____`
|
||||||
|
|
|
@ -5,14 +5,14 @@ error[E0277]: the trait bound `PyErr: From<MyError>` is not satisfied
|
||||||
| ^^^^^^^^^^^^^ the trait `From<MyError>` is not implemented for `PyErr`, which is required by `MyError: Into<PyErr>`
|
| ^^^^^^^^^^^^^ the trait `From<MyError>` is not implemented for `PyErr`, which is required by `MyError: Into<PyErr>`
|
||||||
|
|
|
|
||||||
= help: the following other types implement trait `From<T>`:
|
= help: the following other types implement trait `From<T>`:
|
||||||
<PyErr as From<pyo3::Bound<'py, T>>>
|
<PyErr as From<AddrParseError>>
|
||||||
<PyErr as From<std::io::Error>>
|
<PyErr as From<DecodeUtf16Error>>
|
||||||
<PyErr as From<PyBorrowError>>
|
|
||||||
<PyErr as From<PyBorrowMutError>>
|
|
||||||
<PyErr as From<DowncastError<'_, '_>>>
|
<PyErr as From<DowncastError<'_, '_>>>
|
||||||
<PyErr as From<DowncastIntoError<'_>>>
|
<PyErr as From<DowncastIntoError<'_>>>
|
||||||
<PyErr as From<NulError>>
|
<PyErr as From<FromUtf16Error>>
|
||||||
<PyErr as From<IntoStringError>>
|
<PyErr as From<FromUtf8Error>>
|
||||||
|
<PyErr as From<Infallible>>
|
||||||
|
<PyErr as From<IntoInnerError<W>>>
|
||||||
and $N others
|
and $N others
|
||||||
= note: required for `MyError` to implement `Into<PyErr>`
|
= note: required for `MyError` to implement `Into<PyErr>`
|
||||||
= note: this error originates in the attribute macro `pyfunction` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the attribute macro `pyfunction` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
|
@ -29,9 +29,11 @@ error[E0597]: `holder_0` does not live long enough
|
||||||
| | |
|
| | |
|
||||||
| | `holder_0` dropped here while still borrowed
|
| | `holder_0` dropped here while still borrowed
|
||||||
| binding `holder_0` declared here
|
| binding `holder_0` declared here
|
||||||
| argument requires that `holder_0` is borrowed for `'static`
|
|
||||||
5 | fn static_ref(list: &'static Bound<'_, PyList>) -> usize {
|
5 | fn static_ref(list: &'static Bound<'_, PyList>) -> usize {
|
||||||
| ^^^^^^^ borrowed value does not live long enough
|
| ^^^^^^-
|
||||||
|
| | |
|
||||||
|
| | argument requires that `holder_0` is borrowed for `'static`
|
||||||
|
| borrowed value does not live long enough
|
||||||
|
|
||||||
error: lifetime may not live long enough
|
error: lifetime may not live long enough
|
||||||
--> tests/ui/static_ref.rs:9:1
|
--> tests/ui/static_ref.rs:9:1
|
||||||
|
|
Loading…
Reference in New Issue