Struct probe_rs::Core

source ·
pub struct Core<'probe> { /* private fields */ }
Expand description

Generic core handle representing a physical core on an MCU.

This should be considered as a temporary view of the core which locks the debug probe driver to as single consumer by borrowing it.

As soon as you did your atomic task (e.g. halt the core, read the core state and all other debug relevant info) you should drop this object, to allow potential other shareholders of the session struct to grab a core handle too.

Implementations§

source§

impl<'probe> Core<'probe>

source

pub fn inner_mut(&mut self) -> &mut Box<dyn CoreInterface + 'probe>

Borrow the boxed CoreInterface mutable.

source

pub fn memory_regions(&self) -> impl Iterator<Item = &MemoryRegion>

Return the memory regions associated with this core.

source

pub fn id(&self) -> usize

Returns the ID of this core.

source

pub fn wait_for_core_halted(&mut self, timeout: Duration) -> Result<(), Error>

Wait until the core is halted. If the core does not halt on its own, a DebugProbeError::Timeout error will be returned.

source

pub fn core_halted(&mut self) -> Result<bool, Error>

Check if the core is halted. If the core does not halt on its own, a DebugProbeError::Timeout error will be returned.

source

pub fn halt(&mut self, timeout: Duration) -> Result<CoreInformation, Error>

Try to halt the core. This function ensures the core is actually halted, and returns a DebugProbeError::Timeout otherwise.

source

pub fn run(&mut self) -> Result<(), Error>

Continue to execute instructions.

source

pub fn reset(&mut self) -> Result<(), Error>

Reset the core, and then continue to execute instructions. If the core should be halted after reset, use the reset_and_halt function.

source

pub fn reset_and_halt( &mut self, timeout: Duration ) -> Result<CoreInformation, Error>

Reset the core, and then immediately halt. To continue execution after reset, use the reset function.

source

pub fn step(&mut self) -> Result<CoreInformation, Error>

Steps one instruction and then enters halted state again.

source

pub fn status(&mut self) -> Result<CoreStatus, Error>

Returns the current status of the core.

source

pub fn read_core_reg<T>( &mut self, address: impl Into<RegisterId> ) -> Result<T, Error>
where RegisterValue: TryInto<T>, Result<T, <RegisterValue as TryInto<T>>::Error>: RegisterValueResultExt<T>,

Read the value of a core register.

§Remarks

T can be an unsigned integer type, such as u32 or u64, or it can be RegisterValue to allow the caller to support arbitrary length registers.

To add support to convert to a custom type implement TryInto<CustomType> for RegisterValue.

§Errors

If T isn’t large enough to hold the register value an error will be raised.

source

pub fn write_core_reg<T>( &mut self, address: impl Into<RegisterId>, value: T ) -> Result<(), Error>
where T: Into<RegisterValue>,

Write the value of a core register.

§Errors

If T is too large to write to the target register an error will be raised.

source

pub fn available_breakpoint_units(&mut self) -> Result<u32, Error>

Returns all the available breakpoint units of the core.

source

pub fn debug_on_sw_breakpoint(&mut self, enabled: bool) -> Result<(), Error>

Configure the debug module to ensure software breakpoints will enter Debug Mode.

source

pub fn registers(&self) -> &'static CoreRegisters

Returns a list of all the registers of this core.

source

pub fn program_counter(&self) -> &'static CoreRegister

Returns the program counter register.

source

pub fn frame_pointer(&self) -> &'static CoreRegister

Returns the stack pointer register.

source

pub fn stack_pointer(&self) -> &'static CoreRegister

Returns the frame pointer register.

source

pub fn return_address(&self) -> &'static CoreRegister

Returns the return address register, a.k.a. link register.

source

pub fn set_hw_breakpoint(&mut self, address: u64) -> Result<(), Error>

Set a hardware breakpoint

This function will try to set a hardware breakpoint att address.

The amount of hardware breakpoints which are supported is chip specific, and can be queried using the get_available_breakpoint_units function.

source

pub fn clear_hw_breakpoint(&mut self, address: u64) -> Result<(), Error>

Set a hardware breakpoint

This function will try to clear a hardware breakpoint at address if there exists a breakpoint at that address.

source

pub fn clear_all_hw_breakpoints(&mut self) -> Result<(), Error>

Clear all hardware breakpoints

This function will clear all HW breakpoints which are configured on the target, regardless if they are set by probe-rs, AND regardless if they are enabled or not. Also used as a helper function in Session::drop.

source

pub fn architecture(&self) -> Architecture

Returns the architecture of the core.

source

pub fn core_type(&self) -> CoreType

Returns the core type of the core

source

pub fn instruction_set(&mut self) -> Result<InstructionSet, Error>

Determine the instruction set the core is operating in This must be queried while halted as this is a runtime decision for some core types

source

pub fn fpu_support(&mut self) -> Result<bool, Error>

Determine if an FPU is present. This must be queried while halted as this is a runtime decision for some core types.

source

pub fn floating_point_register_count(&mut self) -> Result<usize, Error>

Determine the number of floating point registers. This must be queried while halted as this is a runtime decision for some core types.

source

pub fn enable_vector_catch( &mut self, condition: VectorCatchCondition ) -> Result<(), Error>

Enables vector catching for the given condition

source

pub fn disable_vector_catch( &mut self, condition: VectorCatchCondition ) -> Result<(), Error>

Disables vector catching for the given condition

source

pub fn dump(&mut self, ranges: Vec<Range<u64>>) -> Result<CoreDump, Error>

Dumps core info with the current state.

§Arguments
  • ranges: Memory ranges that should be dumped.

Trait Implementations§

source§

impl<'probe> CoreInterface for Core<'probe>

source§

fn wait_for_core_halted(&mut self, timeout: Duration) -> Result<(), Error>

Wait until the core is halted. If the core does not halt on its own, a DebugProbeError::Timeout error will be returned.
source§

fn core_halted(&mut self) -> Result<bool, Error>

Check if the core is halted. If the core does not halt on its own, a DebugProbeError::Timeout error will be returned.
source§

fn status(&mut self) -> Result<CoreStatus, Error>

Returns the current status of the core.
source§

fn halt(&mut self, timeout: Duration) -> Result<CoreInformation, Error>

Try to halt the core. This function ensures the core is actually halted, and returns a DebugProbeError::Timeout otherwise.
source§

fn run(&mut self) -> Result<(), Error>

Continue to execute instructions.
source§

fn reset(&mut self) -> Result<(), Error>

Reset the core, and then continue to execute instructions. If the core should be halted after reset, use the reset_and_halt function.
source§

fn reset_and_halt( &mut self, timeout: Duration ) -> Result<CoreInformation, Error>

Reset the core, and then immediately halt. To continue execution after reset, use the reset function.
source§

fn step(&mut self) -> Result<CoreInformation, Error>

Steps one instruction and then enters halted state again.
source§

fn read_core_reg(&mut self, address: RegisterId) -> Result<RegisterValue, Error>

Read the value of a core register.
source§

fn write_core_reg( &mut self, address: RegisterId, value: RegisterValue ) -> Result<(), Error>

Write the value of a core register.
source§

fn available_breakpoint_units(&mut self) -> Result<u32, Error>

Returns all the available breakpoint units of the core.
source§

fn hw_breakpoints(&mut self) -> Result<Vec<Option<u64>>, Error>

Read the hardware breakpoints from FpComp registers, and adds them to the Result Vector. A value of None in any position of the Vector indicates that the position is unset/available. We intentionally return all breakpoints, irrespective of whether they are enabled or not.
source§

fn enable_breakpoints(&mut self, state: bool) -> Result<(), Error>

Enables breakpoints on this core. If a breakpoint is set, it will halt as soon as it is hit.
source§

fn set_hw_breakpoint( &mut self, _unit_index: usize, addr: u64 ) -> Result<(), Error>

Sets a breakpoint at addr. It does so by using unit bp_unit_index.
source§

fn clear_hw_breakpoint(&mut self, _unit_index: usize) -> Result<(), Error>

Clears the breakpoint configured in unit unit_index.
source§

fn registers(&self) -> &'static CoreRegisters

Returns a list of all the registers of this core.
source§

fn program_counter(&self) -> &'static CoreRegister

Returns the program counter register.
source§

fn frame_pointer(&self) -> &'static CoreRegister

Returns the stack pointer register.
source§

fn stack_pointer(&self) -> &'static CoreRegister

Returns the frame pointer register.
source§

fn return_address(&self) -> &'static CoreRegister

Returns the return address register, a.k.a. link register.
source§

fn hw_breakpoints_enabled(&self) -> bool

Returns true if hardware breakpoints are enabled, false otherwise.
source§

fn architecture(&self) -> Architecture

Get the Architecture of the Core.
source§

fn core_type(&self) -> CoreType

Get the CoreType of the Core
source§

fn instruction_set(&mut self) -> Result<InstructionSet, Error>

Determine the instruction set the core is operating in This must be queried while halted as this is a runtime decision for some core types
source§

fn fpu_support(&mut self) -> Result<bool, Error>

Determine if an FPU is present. This must be queried while halted as this is a runtime decision for some core types.
source§

fn floating_point_register_count(&mut self) -> Result<usize, Error>

Determine the number of floating point registers. This must be queried while halted as this is a runtime decision for some core types.
source§

fn reset_catch_set(&mut self) -> Result<(), Error>

Set the reset catch setting. Read more
source§

fn reset_catch_clear(&mut self) -> Result<(), Error>

Clear the reset catch setting. Read more
source§

fn debug_core_stop(&mut self) -> Result<(), Error>

Called when we stop debugging a core.
source§

fn debug_on_sw_breakpoint(&mut self, _enabled: bool) -> Result<(), Error>

Configure the target to ensure software breakpoints will enter Debug Mode.
source§

fn on_session_stop(&mut self) -> Result<(), Error>

Called during session stop to do any pending cleanup
source§

fn enable_vector_catch( &mut self, _condition: VectorCatchCondition ) -> Result<(), Error>

Enables vector catching for the given condition
source§

fn disable_vector_catch( &mut self, _condition: VectorCatchCondition ) -> Result<(), Error>

Disables vector catching for the given condition
source§

impl<'probe> MemoryInterface for Core<'probe>

source§

fn supports_native_64bit_access(&mut self) -> bool

Does this interface support native 64-bit wide accesses Read more
source§

fn read_word_64(&mut self, address: u64) -> Result<u64, Error>

Read a 64bit word of at address. Read more
source§

fn read_word_32(&mut self, address: u64) -> Result<u32, Error>

Read a 32bit word of at address. Read more
source§

fn read_word_16(&mut self, address: u64) -> Result<u16, Error>

Read a 16bit word of at address. Read more
source§

fn read_word_8(&mut self, address: u64) -> Result<u8, Error>

Read an 8bit word of at address.
source§

fn read_64(&mut self, address: u64, data: &mut [u64]) -> Result<(), Error>

Read a block of 64bit words at address. Read more
source§

fn read_32(&mut self, address: u64, data: &mut [u32]) -> Result<(), Error>

Read a block of 32bit words at address. Read more
source§

fn read_16(&mut self, address: u64, data: &mut [u16]) -> Result<(), Error>

Read a block of 16bit words at address. Read more
source§

fn read_8(&mut self, address: u64, data: &mut [u8]) -> Result<(), Error>

Read a block of 8bit words at address.
source§

fn read(&mut self, address: u64, data: &mut [u8]) -> Result<(), Error>

Read data from address. Read more
source§

fn write_word_64(&mut self, addr: u64, data: u64) -> Result<(), Error>

Write a 64bit word at address. Read more
source§

fn write_word_32(&mut self, addr: u64, data: u32) -> Result<(), Error>

Write a 32bit word at address. Read more
source§

fn write_word_16(&mut self, addr: u64, data: u16) -> Result<(), Error>

Write a 16bit word at address. Read more
source§

fn write_word_8(&mut self, addr: u64, data: u8) -> Result<(), Error>

Write an 8bit word at address.
source§

fn write_64(&mut self, addr: u64, data: &[u64]) -> Result<(), Error>

Write a block of 64bit words at address. Read more
source§

fn write_32(&mut self, addr: u64, data: &[u32]) -> Result<(), Error>

Write a block of 32bit words at address. Read more
source§

fn write_16(&mut self, addr: u64, data: &[u16]) -> Result<(), Error>

Write a block of 16bit words at address. Read more
source§

fn write_8(&mut self, addr: u64, data: &[u8]) -> Result<(), Error>

Write a block of 8bit words at address.
source§

fn write(&mut self, addr: u64, data: &[u8]) -> Result<(), Error>

Write a block of 8bit words at address. May use 64 bit memory access, so should only be used if reading memory locations that don’t have side effects. Generally faster than MemoryInterface::write_8. Read more
source§

fn supports_8bit_transfers(&self) -> Result<bool, Error>

Returns whether the current platform supports native 8bit transfers.
source§

fn flush(&mut self) -> Result<(), Error>

Flush any outstanding operations. Read more
source§

fn read_mem_64bit(&mut self, address: u64, data: &mut [u8]) -> Result<(), Error>

Reads bytes using 64 bit memory access. Read more
source§

fn read_mem_32bit(&mut self, address: u64, data: &mut [u8]) -> Result<(), Error>

Reads bytes using 32 bit memory access. Read more
source§

fn write_mem_64bit(&mut self, address: u64, data: &[u8]) -> Result<(), Error>

Writes bytes using 64 bit memory access. Address must be 64 bit aligned and data must be an exact multiple of 8.
source§

fn write_mem_32bit(&mut self, address: u64, data: &[u8]) -> Result<(), Error>

Writes bytes using 32 bit memory access. Address must be 32 bit aligned and data must be an exact multiple of 8.

Auto Trait Implementations§

§

impl<'probe> !RefUnwindSafe for Core<'probe>

§

impl<'probe> !Send for Core<'probe>

§

impl<'probe> !Sync for Core<'probe>

§

impl<'probe> Unpin for Core<'probe>

§

impl<'probe> !UnwindSafe for Core<'probe>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

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,

Causes self to use its Display implementation when Debug-formatted.
§

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,

Causes self to use its LowerHex implementation when Debug-formatted.
§

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,

Causes self to use its Pointer implementation when Debug-formatted.
§

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,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<D> OwoColorize for D

§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
§

fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>

Change the foreground color to black
§

fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>

Change the background color to black
§

fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>

Change the foreground color to red
§

fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>

Change the background color to red
§

fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>

Change the foreground color to green
§

fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>

Change the background color to green
§

fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>

Change the foreground color to yellow
§

fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>

Change the background color to yellow
§

fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>

Change the foreground color to blue
§

fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>

Change the background color to blue
§

fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to magenta
§

fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to magenta
§

fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>

Change the foreground color to purple
§

fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>

Change the background color to purple
§

fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>

Change the foreground color to cyan
§

fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>

Change the background color to cyan
§

fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>

Change the foreground color to white
§

fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>

Change the background color to white
§

fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>

Change the foreground color to the terminal default
§

fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>

Change the background color to the terminal default
§

fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>

Change the foreground color to bright black
§

fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>

Change the background color to bright black
§

fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>

Change the foreground color to bright red
§

fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>

Change the background color to bright red
§

fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>

Change the foreground color to bright green
§

fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>

Change the background color to bright green
§

fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>

Change the foreground color to bright yellow
§

fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>

Change the background color to bright yellow
§

fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>

Change the foreground color to bright blue
§

fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>

Change the background color to bright blue
§

fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright magenta
§

fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright magenta
§

fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>

Change the foreground color to bright purple
§

fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>

Change the background color to bright purple
§

fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>

Change the foreground color to bright cyan
§

fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>

Change the background color to bright cyan
§

fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>

Change the foreground color to bright white
§

fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>

Change the background color to bright white
§

fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>

Make the text bold
§

fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>

Make the text dim
§

fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>

Make the text italicized
§

fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>

Make the text italicized
Make the text blink
Make the text blink (but fast!)
§

fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>

Swap the foreground and background colors
§

fn hidden<'a>(&'a self) -> HiddenDisplay<'a, Self>

Hide the text
§

fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>

Cross out the text
§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where 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) -> R
where 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) -> R
where 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

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

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

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
where Self: BorrowMut<B>, B: ?Sized,

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
where Self: AsRef<R>, R: ?Sized,

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
where Self: AsMut<R>, R: ?Sized,

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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more