#[repr(transparent)]pub struct PyVector {
pub(crate) vector: VectorRef,
}
Expand description
The Main FFI type PyVector
that is used both in RustPython and PyO3
Fields§
§vector: VectorRef
Implementations§
source§impl PyVector
impl PyVector
pub(crate) fn data_type(&self) -> ConcreteDataType
pub(crate) fn arrow_data_type(&self) -> ArrowDataType
pub(crate) fn vector_and(left: &Self, right: &Self) -> Result<Self, String>
pub(crate) fn vector_or(left: &Self, right: &Self) -> Result<Self, String>
pub(crate) fn vector_invert(left: &Self) -> Result<Self, String>
sourcepub fn as_vector_ref(&self) -> VectorRef
pub fn as_vector_ref(&self) -> VectorRef
create a ref to inner vector
pub fn to_arrow_array(&self) -> ArrayRef
pub(crate) fn scalar_arith_op<F>( &self, right: Value, target_type: Option<ArrowDataType>, op: F, ) -> Result<Self, String>
pub(crate) fn rspy_scalar_arith_op<F>( &self, other: PyObjectRef, target_type: Option<ArrowDataType>, op: F, vm: &VirtualMachine, ) -> PyResult<PyVector>
sourcefn coerce_types(
left_type: &ArrowDataType,
right_type: &ArrowDataType,
target_type: &Option<ArrowDataType>,
) -> ArrowDataType
fn coerce_types( left_type: &ArrowDataType, right_type: &ArrowDataType, target_type: &Option<ArrowDataType>, ) -> ArrowDataType
Returns the type that should be used for the result of an arithmetic operation
pub(crate) fn vector_arith_op<F>( &self, right: &Self, target_type: Option<ArrowDataType>, op: F, ) -> Result<PyVector, String>
pub(crate) fn rspy_vector_arith_op<F>( &self, other: PyObjectRef, target_type: Option<ArrowDataType>, op: F, vm: &VirtualMachine, ) -> PyResult<PyVector>
pub(crate) fn _getitem( &self, needle: &PyObject, vm: &VirtualMachine, ) -> PyResult<PyObjectRef>
pub(crate) fn getitem_by_index( &self, i: isize, vm: &VirtualMachine, ) -> PyResult<PyObjectRef>
sourcefn getitem_by_slice(
&self,
slice: &SaturatedSlice,
vm: &VirtualMachine,
) -> PyResult<PyObjectRef>
fn getitem_by_slice( &self, slice: &SaturatedSlice, vm: &VirtualMachine, ) -> PyResult<PyObjectRef>
Return a PyVector
in PyObjectRef
sourcefn setitem_by_index(
zelf: PyRef<Self>,
i: isize,
value: PyObjectRef,
vm: &VirtualMachine,
) -> PyResult<()>
fn setitem_by_index( zelf: PyRef<Self>, i: isize, value: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<()>
Unsupported TODO(discord9): make it work
sourcepub(crate) fn richcompare(
&self,
other: PyObjectRef,
op: PyComparisonOp,
vm: &VirtualMachine,
) -> PyResult<PyVector>
pub(crate) fn richcompare( &self, other: PyObjectRef, op: PyComparisonOp, vm: &VirtualMachine, ) -> PyResult<PyVector>
rich compare, return a boolean array, accept type are vec and vec and vec and number
pub(crate) fn len(&self) -> usize
source§impl PyVector
impl PyVector
PyVector type wraps a greptime vector, impl multiply/div/add/sub opeerators etc.
pub(crate) fn new( iterable: OptionalArg<PyObjectRef>, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn add( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn sub( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn rsub( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn mul( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn truediv( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn rtruediv( &self, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn floordiv( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn rfloordiv( &self, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn obj_to_vector( obj: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyRef<PyVector>>
fn and( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn or( zelf: PyObjectRef, other: PyObjectRef, vm: &VirtualMachine, ) -> PyResult<PyVector>
fn invert(zelf: PyObjectRef, vm: &VirtualMachine) -> PyResult<PyVector>
fn len_rspy(&self) -> usize
fn concat( &self, other: PyRef<PyVector>, vm: &VirtualMachine, ) -> PyResult<PyVector>
sourcefn filter(
&self,
other: PyRef<PyVector>,
vm: &VirtualMachine,
) -> PyResult<PyVector>
fn filter( &self, other: PyRef<PyVector>, vm: &VirtualMachine, ) -> PyResult<PyVector>
take a boolean array and filters the Array, returning elements matching the filter (i.e. where the values are true).
fn doc(&self) -> PyResult<PyStr>
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>)
fn __extend_slots(slots: &mut PyTypeSlots)
Trait Implementations§
source§impl AsMapping for PyVector
impl AsMapping for PyVector
fn as_mapping() -> &'static PyMappingMethods
fn mapping_downcast(mapping: PyMapping<'_>) -> &Py<Self>
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>)
fn __extend_slots(slots: &mut PyTypeSlots)
source§impl AsNumber for PyVector
impl AsNumber for PyVector
fn as_number() -> &'static PyNumberMethods
fn clone_exact(_zelf: &Py<Self>, _vm: &VirtualMachine) -> PyRef<Self>
fn number_downcast(num: PyNumber<'_>) -> &Py<Self>
fn number_downcast_exact(num: PyNumber<'_>, vm: &VirtualMachine) -> PyRef<Self>
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>)
fn __extend_slots(slots: &mut PyTypeSlots)
source§impl AsSequence for PyVector
impl AsSequence for PyVector
fn as_sequence() -> &'static PySequenceMethods
fn sequence_downcast(seq: PySequence<'_>) -> &Py<Self>
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>)
fn __extend_slots(slots: &mut PyTypeSlots)
source§impl Comparable for PyVector
impl Comparable for PyVector
fn slot_richcompare( zelf: &PyObject, other: &PyObject, op: PyComparisonOp, vm: &VirtualMachine, ) -> PyResult<Either<PyObjectRef, PyComparisonValue>>
fn cmp( _zelf: &Py<Self>, _other: &PyObject, _op: PyComparisonOp, _vm: &VirtualMachine, ) -> PyResult<PyComparisonValue>
fn eq( zelf: &Py<Self>, other: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyArithmeticValue<bool>, PyRef<PyBaseException>>
fn ne( zelf: &Py<Self>, other: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyArithmeticValue<bool>, PyRef<PyBaseException>>
fn lt( zelf: &Py<Self>, other: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyArithmeticValue<bool>, PyRef<PyBaseException>>
fn le( zelf: &Py<Self>, other: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyArithmeticValue<bool>, PyRef<PyBaseException>>
fn ge( zelf: &Py<Self>, other: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyArithmeticValue<bool>, PyRef<PyBaseException>>
fn gt( zelf: &Py<Self>, other: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyArithmeticValue<bool>, PyRef<PyBaseException>>
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>)
fn __extend_slots(slots: &mut PyTypeSlots)
source§impl PyClassDef for PyVector
impl PyClassDef for PyVector
source§impl PyClassImpl for PyVector
impl PyClassImpl for PyVector
const TP_FLAGS: PyTypeFlags = _
fn impl_extend_class(ctx: &Context, class: &'static Py<PyType>)
fn extend_slots(slots: &mut PyTypeSlots)
fn extend_class(ctx: &Context, class: &'static Py<PyType>)
fn make_class(ctx: &Context) -> PyRef<PyType>where
Self: StaticType,
fn make_slots() -> PyTypeSlots
source§impl PyPayload for PyVector
impl PyPayload for PyVector
fn class(_ctx: &Context) -> &'static Py<PyType>
fn into_pyobject(self, vm: &VirtualMachine) -> PyObjectRef
fn _into_ref(self, cls: PyRef<PyType>, ctx: &Context) -> PyRef<Self>
fn into_exact_ref(self, ctx: &Context) -> PyRefExact<Self>
fn into_ref(self, ctx: &Context) -> PyRef<Self>
fn into_ref_with_type( self, vm: &VirtualMachine, cls: PyRef<PyType>, ) -> Result<PyRef<Self>, PyRef<PyBaseException>>
source§impl Representable for PyVector
impl Representable for PyVector
fn repr_str(zelf: &Py<Self>, _vm: &VirtualMachine) -> PyResult<String>
fn slot_repr( zelf: &PyObject, vm: &VirtualMachine, ) -> Result<PyRef<PyStr>, PyRef<PyBaseException>>
fn __repr__( zelf: PyObjectRef, vm: &VirtualMachine, ) -> Result<PyRef<PyStr>, PyRef<PyBaseException>>
fn repr( zelf: &Py<Self>, vm: &VirtualMachine, ) -> Result<PyRef<PyStr>, PyRef<PyBaseException>>
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>)
fn __extend_slots(slots: &mut PyTypeSlots)
source§impl StaticType for PyVector
impl StaticType for PyVector
fn static_cell() -> &'static StaticCell<PyTypeRef>
fn static_metaclass() -> &'static Py<PyType>
fn static_baseclass() -> &'static Py<PyType>
fn static_type() -> &'static Py<PyType>
fn init_manually(typ: PyRef<PyType>) -> &'static Py<PyType>
fn init_builtin_type() -> &'static Py<PyType>where
Self: PyClassImpl,
fn create_static_type() -> PyRef<PyType>where
Self: PyClassImpl,
Auto Trait Implementations§
impl Freeze for PyVector
impl !RefUnwindSafe for PyVector
impl Send for PyVector
impl Sync for PyVector
impl Unpin for PyVector
impl !UnwindSafe for PyVector
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<T, V> Convert<T> for Vwhere
V: Into<T>,
impl<T, V> Convert<T> for Vwhere
V: Into<T>,
fn convert(value: Self) -> T
fn convert_box(value: Box<Self>) -> Box<T>
fn convert_vec(value: Vec<Self>) -> Vec<T>
fn convert_vec_box(value: Vec<Box<Self>>) -> Vec<Box<T>>
fn convert_matrix(value: Vec<Vec<Self>>) -> Vec<Vec<T>>
fn convert_option(value: Option<Self>) -> Option<T>
fn convert_option_box(value: Option<Box<Self>>) -> Option<Box<T>>
fn convert_option_vec(value: Option<Vec<Self>>) -> Option<Vec<T>>
§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
§impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<Source> Sculptor<HNil, HNil> for Source
impl<Source> Sculptor<HNil, HNil> for Source
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.