Struct re_viewer::external::egui_kittest::Harness
pub struct Harness<'a, State = ()> {
pub ctx: Context,
pub(crate) input: RawInput,
pub(crate) kittest: State,
pub(crate) output: FullOutput,
pub(crate) app: AppKind<'a, State>,
pub(crate) event_state: EventState,
pub(crate) response: Option<Response>,
pub(crate) state: State,
pub(crate) renderer: Box<dyn TestRenderer>,
pub(crate) max_steps: u64,
pub(crate) step_dt: f32,
}
Expand description
The test Harness. This contains everything needed to run the test.
Create a new Harness using Harness::new
or Harness::builder
.
The Harness has a optional generic state that can be used to pass data to the app / ui closure. In most cases it should be fine to just store the state in the closure itself. The state functions are useful if you need to access the state after the harness has been created.
Fields§
§ctx: Context
§input: RawInput
§kittest: State
§output: FullOutput
§app: AppKind<'a, State>
§event_state: EventState
§response: Option<Response>
§state: State
§renderer: Box<dyn TestRenderer>
§max_steps: u64
§step_dt: f32
Implementations§
§impl<State> Harness<'_, State>
impl<State> Harness<'_, State>
pub fn try_snapshot_options(
&mut self,
name: &str,
options: &SnapshotOptions,
) -> Result<(), SnapshotError>
pub fn try_snapshot_options( &mut self, name: &str, options: &SnapshotOptions, ) -> Result<(), SnapshotError>
Render an image using the setup crate::TestRenderer
and compare it to the snapshot
with custom options.
If you want to change the default options for your whole project, you could create an
extension trait to create a
new my_image_snapshot
function on the Harness that calls this function with the desired options.
You could additionally use the
disallowed_methods
lint to disable use of the Harness::snapshot
to prevent accidentally using the wrong defaults.
The snapshot files will be saved under SnapshotOptions::output_path
.
The snapshot will be saved under {output_path}/{name}.png
.
The new image from the most recent test run will be saved under {output_path}/{name}.new.png
.
If the new image didn’t match the snapshot, a diff image will be saved under {output_path}/{name}.diff.png
.
§Errors
Returns a SnapshotError
if the image does not match the snapshot, if there was an
error reading or writing the snapshot, if the rendering fails or if no default renderer is available.
pub fn try_snapshot(&mut self, name: &str) -> Result<(), SnapshotError>
pub fn try_snapshot(&mut self, name: &str) -> Result<(), SnapshotError>
Render an image using the setup crate::TestRenderer
and compare it to the snapshot.
The snapshot will be saved under tests/snapshots/{name}.png
.
The new image from the last test run will be saved under tests/snapshots/{name}.new.png
.
If the new image didn’t match the snapshot, a diff image will be saved under tests/snapshots/{name}.diff.png
.
§Errors
Returns a SnapshotError
if the image does not match the snapshot, if there was an
error reading or writing the snapshot, if the rendering fails or if no default renderer is available.
pub fn snapshot_options(&mut self, name: &str, options: &SnapshotOptions)
pub fn snapshot_options(&mut self, name: &str, options: &SnapshotOptions)
Render an image using the setup crate::TestRenderer
and compare it to the snapshot
with custom options.
If you want to change the default options for your whole project, you could create an
extension trait to create a
new my_image_snapshot
function on the Harness that calls this function with the desired options.
You could additionally use the
disallowed_methods
lint to disable use of the Harness::snapshot
to prevent accidentally using the wrong defaults.
The snapshot files will be saved under SnapshotOptions::output_path
.
The snapshot will be saved under {output_path}/{name}.png
.
The new image from the most recent test run will be saved under {output_path}/{name}.new.png
.
If the new image didn’t match the snapshot, a diff image will be saved under {output_path}/{name}.diff.png
.
§Panics
Panics if the image does not match the snapshot, if there was an error reading or writing the snapshot, if the rendering fails or if no default renderer is available.
pub fn snapshot(&mut self, name: &str)
pub fn snapshot(&mut self, name: &str)
Render an image using the setup crate::TestRenderer
and compare it to the snapshot.
The snapshot will be saved under tests/snapshots/{name}.png
.
The new image from the last test run will be saved under tests/snapshots/{name}.new.png
.
If the new image didn’t match the snapshot, a diff image will be saved under tests/snapshots/{name}.diff.png
.
§Panics
Panics if the image does not match the snapshot, if there was an error reading or writing the snapshot, if the rendering fails or if no default renderer is available.
§impl<State> Harness<'_, State>
impl<State> Harness<'_, State>
pub fn try_wgpu_snapshot_options( &mut self, name: &str, options: &SnapshotOptions, ) -> Result<(), SnapshotError>
try_snapshot_options
instead. This function will be removed in 0.32pub fn try_wgpu_snapshot(&mut self, name: &str) -> Result<(), SnapshotError>
try_snapshot
instead. This function will be removed in 0.32pub fn wgpu_snapshot_options(&mut self, name: &str, options: &SnapshotOptions)
snapshot_options
instead. This function will be removed in 0.32pub fn wgpu_snapshot(&mut self, name: &str)
snapshot
instead. This function will be removed in 0.32§impl<'a, State> Harness<'a, State>
impl<'a, State> Harness<'a, State>
pub fn builder() -> HarnessBuilder<State>
pub fn builder() -> HarnessBuilder<State>
Create a Harness
via a HarnessBuilder
.
pub fn new_state(
app: impl FnMut(&Context, &mut State) + 'a,
state: State,
) -> Harness<'a, State>
pub fn new_state( app: impl FnMut(&Context, &mut State) + 'a, state: State, ) -> Harness<'a, State>
Create a new Harness with the given app closure and a state.
The app closure will immediately be called once to create the initial ui.
If you don’t need to create Windows / Panels, you can use Harness::new_ui
instead.
If you e.g. want to customize the size of the window, you can use Harness::builder
.
§Example
let mut checked = false;
let mut harness = Harness::new_state(|ctx, checked| {
CentralPanel::default().show(ctx, |ui| {
ui.checkbox(checked, "Check me!");
});
}, checked);
harness.get_by_label("Check me!").click();
harness.run();
assert_eq!(*harness.state(), true);
pub fn new_ui_state(
app: impl FnMut(&mut Ui, &mut State) + 'a,
state: State,
) -> Harness<'a, State>
pub fn new_ui_state( app: impl FnMut(&mut Ui, &mut State) + 'a, state: State, ) -> Harness<'a, State>
Create a new Harness with the given ui closure and a state.
The ui closure will immediately be called once to create the initial ui.
If you need to create Windows / Panels, you can use Harness::new
instead.
If you e.g. want to customize the size of the ui, you can use Harness::builder
.
§Example
let mut checked = false;
let mut harness = Harness::new_ui_state(|ui, checked| {
ui.checkbox(checked, "Check me!");
}, checked);
harness.get_by_label("Check me!").click();
harness.run();
assert_eq!(*harness.state(), true);
pub fn new_eframe(
builder: impl FnOnce(&mut CreationContext<'a>) -> State,
) -> Harness<'a, State>where
State: App,
pub fn new_eframe(
builder: impl FnOnce(&mut CreationContext<'a>) -> State,
) -> Harness<'a, State>where
State: App,
Create a new Harness from the given eframe creation closure.
pub fn set_size(&mut self, size: Vec2) -> &mut Harness<'a, State>
pub fn set_size(&mut self, size: Vec2) -> &mut Harness<'a, State>
Set the size of the window.
Note: If you only want to set the size once at the beginning,
prefer using HarnessBuilder::with_size
.
pub fn set_pixels_per_point(
&mut self,
pixels_per_point: f32,
) -> &mut Harness<'a, State>
pub fn set_pixels_per_point( &mut self, pixels_per_point: f32, ) -> &mut Harness<'a, State>
Set the pixels_per_point
of the window.
Note: If you only want to set the pixels_per_point
once at the beginning,
prefer using HarnessBuilder::with_pixels_per_point
.
pub fn step(&mut self)
pub fn step(&mut self)
Run a frame. This will call the app closure with the queued events and current context and update the Harness.
pub fn fit_contents(&mut self)
pub fn fit_contents(&mut self)
Resize the test harness to fit the contents. This only works when creating the Harness via
Harness::new_ui
/ Harness::new_ui_state
or
HarnessBuilder::build_ui
/ HarnessBuilder::build_ui_state
.
pub fn run(&mut self) -> u64
pub fn run(&mut self) -> u64
Run until
- all animations are done
- no more repaints are requested
Returns the number of frames that were run.
§Panics
Panics if the number of steps exceeds the maximum number of steps set
in HarnessBuilder::with_max_steps
.
See also:
pub fn try_run(&mut self) -> Result<u64, ExceededMaxStepsError>
pub fn try_run(&mut self) -> Result<u64, ExceededMaxStepsError>
Run until
- all animations are done
- no more repaints are requested
- the maximum number of steps is reached (See
HarnessBuilder::with_max_steps
)
Returns the number of steps that were run.
§Errors
Returns an error if the maximum number of steps is exceeded.
See also:
pub fn run_ok(&mut self) -> Option<u64>
pub fn run_ok(&mut self) -> Option<u64>
Run until
- all animations are done
- no more repaints are requested
- the maximum number of steps is reached (See
HarnessBuilder::with_max_steps
)
Returns the number of steps that were run, or None if the maximum number of steps was exceeded.
See also:
pub fn run_steps(&mut self, steps: usize)
pub fn run_steps(&mut self, steps: usize)
Run a number of steps.
Equivalent to calling Harness::step
x times.
pub fn input(&self) -> &RawInput
pub fn input(&self) -> &RawInput
Access the [egui::RawInput
] for the next frame.
pub fn input_mut(&mut self) -> &mut RawInput
pub fn input_mut(&mut self) -> &mut RawInput
Access the [egui::RawInput
] for the next frame mutably.
pub fn output(&self) -> &FullOutput
pub fn output(&self) -> &FullOutput
Access the [egui::FullOutput
] for the last frame.
pub fn kittest_state(&self) -> &State
pub fn kittest_state(&self) -> &State
Access the kittest::State
.
pub fn state_mut(&mut self) -> &mut State
pub fn state_mut(&mut self) -> &mut State
Access the state mutably.
pub fn press_key(&mut self, key: Key)
pub fn press_key(&mut self, key: Key)
Press a key. This will create a key down event and a key up event.
pub fn press_key_modifiers(&mut self, modifiers: Modifiers, key: Key)
pub fn press_key_modifiers(&mut self, modifiers: Modifiers, key: Key)
Press a key with modifiers. This will create a key down event and a key up event.
§impl<'a> Harness<'a>
impl<'a> Harness<'a>
Utilities for stateless harnesses.
pub fn new(app: impl FnMut(&Context) + 'a) -> Harness<'a>
pub fn new(app: impl FnMut(&Context) + 'a) -> Harness<'a>
Create a new Harness with the given app closure.
Use the Harness::run
, Harness::step
, etc… methods to run the app.
The app closure will immediately be called once to create the initial ui.
If you don’t need to create Windows / Panels, you can use Harness::new_ui
instead.
If you e.g. want to customize the size of the window, you can use Harness::builder
.
§Example
let mut harness = Harness::new(|ctx| {
CentralPanel::default().show(ctx, |ui| {
ui.label("Hello, world!");
});
});
pub fn new_ui(app: impl FnMut(&mut Ui) + 'a) -> Harness<'a>
pub fn new_ui(app: impl FnMut(&mut Ui) + 'a) -> Harness<'a>
Create a new Harness with the given ui closure.
Use the Harness::run
, Harness::step
, etc… methods to run the app.
The ui closure will immediately be called once to create the initial ui.
If you need to create Windows / Panels, you can use Harness::new
instead.
If you e.g. want to customize the size of the ui, you can use Harness::builder
.
§Example
let mut harness = Harness::new_ui(|ui| {
ui.label("Hello, world!");
});
Trait Implementations§
source§impl HarnessExt for Harness<'_>
impl HarnessExt for Harness<'_>
§impl<'t, 'n, State> Queryable<'t, 'n> for Harness<'_, State>where
'n: 't,
impl<'t, 'n, State> Queryable<'t, 'n> for Harness<'_, State>where
'n: 't,
fn node(&'n self) -> Node<'t>
§fn query_all(
&'node self,
by: By<'tree>,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all( &'node self, by: By<'tree>, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
By
filter.§fn get_all(
&'node self,
by: By<'tree>,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all( &'node self, by: By<'tree>, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn query(&'node self, by: By<'tree>) -> Option<Node<'tree>>
fn query(&'node self, by: By<'tree>) -> Option<Node<'tree>>
By
filter.
Returns None
if no nodes are found.§fn query_all_by_label(
&'node self,
label: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all_by_label( &'node self, label: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn get_all_by_label(
&'node self,
label: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all_by_label( &'node self, label: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn query_by_label(&'node self, label: &'tree str) -> Option<Node<'tree>>
fn query_by_label(&'node self, label: &'tree str) -> Option<Node<'tree>>
None
if no nodes are found. Read more§fn get_by_label(&'node self, label: &'tree str) -> Node<'tree>
fn get_by_label(&'node self, label: &'tree str) -> Node<'tree>
§fn query_all_by_label_contains(
&'node self,
label: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all_by_label_contains( &'node self, label: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn get_all_by_label_contains(
&'node self,
label: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all_by_label_contains( &'node self, label: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn query_by_label_contains(
&'node self,
label: &'tree str,
) -> Option<Node<'tree>>
fn query_by_label_contains( &'node self, label: &'tree str, ) -> Option<Node<'tree>>
None
if no nodes are found. Read more§fn get_by_label_contains(&'node self, label: &'tree str) -> Node<'tree>
fn get_by_label_contains(&'node self, label: &'tree str) -> Node<'tree>
§fn query_all_by_role_and_label(
&'node self,
role: Role,
label: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all_by_role_and_label( &'node self, role: Role, label: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn get_all_by_role_and_label(
&'node self,
role: Role,
label: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all_by_role_and_label( &'node self, role: Role, label: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn query_by_role_and_label(
&'node self,
role: Role,
label: &'tree str,
) -> Option<Node<'tree>>
fn query_by_role_and_label( &'node self, role: Role, label: &'tree str, ) -> Option<Node<'tree>>
None
if no nodes are found. Read more§fn get_by_role_and_label(
&'node self,
role: Role,
label: &'tree str,
) -> Node<'tree>
fn get_by_role_and_label( &'node self, role: Role, label: &'tree str, ) -> Node<'tree>
§fn query_all_by_role(
&'node self,
role: Role,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all_by_role( &'node self, role: Role, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn get_all_by_role(
&'node self,
role: Role,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all_by_role( &'node self, role: Role, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn query_by_role(&'node self, role: Role) -> Option<Node<'tree>>
fn query_by_role(&'node self, role: Role) -> Option<Node<'tree>>
None
if no nodes are found.§fn get_by_role(&'node self, role: Role) -> Node<'tree>
fn get_by_role(&'node self, role: Role) -> Node<'tree>
§fn query_all_by_value(
&'node self,
value: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all_by_value( &'node self, value: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn get_all_by_value(
&'node self,
value: &'tree str,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all_by_value( &'node self, value: &'tree str, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn query_by_value(&'node self, value: &'tree str) -> Option<Node<'tree>>
fn query_by_value(&'node self, value: &'tree str) -> Option<Node<'tree>>
None
if no nodes are found.§fn get_by_value(&'node self, value: &'tree str) -> Node<'tree>
fn get_by_value(&'node self, value: &'tree str) -> Node<'tree>
§fn query_all_by(
&'node self,
f: impl Fn(&Node<'_>) -> bool + 'tree,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn query_all_by( &'node self, f: impl Fn(&Node<'_>) -> bool + 'tree, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
§fn get_all_by(
&'node self,
f: impl Fn(&Node<'_>) -> bool + 'tree,
) -> impl DoubleEndedIterator + FusedIterator + 'tree
fn get_all_by( &'node self, f: impl Fn(&Node<'_>) -> bool + 'tree, ) -> impl DoubleEndedIterator + FusedIterator + 'tree
Auto Trait Implementations§
impl<'a, State = ()> !Freeze for Harness<'a, State>
impl<'a, State = ()> !RefUnwindSafe for Harness<'a, State>
impl<'a, State = ()> !Send for Harness<'a, State>
impl<'a, State = ()> !Sync for Harness<'a, State>
impl<'a, State> Unpin for Harness<'a, State>where
State: Unpin,
impl<'a, State = ()> !UnwindSafe for Harness<'a, State>
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
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§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>
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>
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>
T
in a tonic::Request
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§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,
§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,
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,
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
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
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
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.tap_deref()
only in debug builds, and is erased in release
builds.