allow downstream overwrite of the Bound<T>
deref target
#3956
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Following PyO3/rust-numpy#411 (comment) this explores the possibility to allow downstream crates that implement native Python type (like
rust-numpy
) to overwrite theDeref::Target
.The approach described here renames
DerefToPyAny
toDerefToTarget
and adds aTarget
associated type. The blankedDeref
implementation is adjusted to use that as its target insideBound
.pyo3
s native types usePyAny
as default,#[pyclass]
es use their inherited (#[pyclass(extends = ...]
) class if they have orPyAny
if not.Questions
DerefToTarget
be an unsafe trait now, that we useTarget
for an unsafe cast?pyo3
s code base of the following type:rust-numpy
, it didn't cause anything there.