pub struct SymbolPath {
pub path: SmallVec<[SymbolNameComponent; 3]>,
}Expand description
This type is a custom [Attribute] for [Symbol] references.
A SymbolPath is represented much like a filesystem path, i.e. as a vector of components.
Each component refers to a distinct Symbol that must be resolvable, the details of which
depends on what style of path is used.
Similar to filesystem paths, there are two types of paths supported:
- Unrooted (i.e. relative) paths. These are resolved from the nearest parent
SymbolTable, and must terminate withSymbolNameComponent::Leaf. - Absolute paths. The resolution rules for these depends on what the top-level operation is
as reachable from the containing operation, described in more detail below. These paths
must begin with
SymbolNameComponent::Root.
NOTE: There is no equivalent of the . or .. nodes in a filesystem path in symbol paths,
at least at the moment. Thus there is no way to refer to symbols some arbitrary number of
parents above the current SymbolTable, they must be resolved to absolute paths by the
frontend for now.
§Symbol Resolution
Relative paths, as mentioned above, are resolved from the nearest parent SymbolTable; if
no SymbolTable is present, an error will be raised.
Absolute paths are relatively simple, but supports two use cases, based on the top-level operation reachable from the current operation, i.e. the operation at the top of the ancestor tree which has no parent:
- If the top-level operation is an anonymous
SymbolTable(i.e. it is not also aSymbol), then thatSymbolTablecorresponds to the global (root) namespace, and symbols are resolved recursively from there. - If the top-level operation is a named
SymbolTable(i.e. it is also aSymbol), then it is presumed that the top-level operation is defined in the global (root) namespace, even though we are unable to reach the global namespace directly. Thus, the symbol we’re trying to resolve must be a descendant of the top-level operation. This implies that the symbol path of the top-level operation must be a prefix ofpath.
We support the second style to allow for working with more localized chunks of IR, when no
symbol references escape the top-level SymbolTable. This is mostly useful in testing
scenarios.
Symbol resolution of absolute paths will fail if:
- The top-level operation is not a
SymbolTable - The top-level operation is a
Symbolwhose path is not a prefix ofpath - We are unable to resolve any component of the path, starting from the top-level
- Any intermediate symbol in the path refers to a
Symbolwhich is not also aSymbolTable
Fields§
§path: SmallVec<[SymbolNameComponent; 3]>The underlying components of the symbol name (alternatively called the symbol path).
Implementations§
Source§impl SymbolPath
impl SymbolPath
pub fn new<I>(components: I) -> Result<Self, InvalidSymbolPathError>where
I: IntoIterator<Item = SymbolNameComponent>,
Sourcepub fn from_masm_function_id(id: FunctionIdent) -> Self
pub fn from_masm_function_id(id: FunctionIdent) -> Self
Converts a FunctionIdent representing a fully-qualified Miden Assembly procedure path, to it’s equivalent SymbolPath representation.
§Example
use midenc_hir::{SymbolPath, SymbolNameComponent, FunctionIdent};
let id = FunctionIdent {
module: "intrinsics::mem".into(),
function: "load_felt_unchecked".into(),
};
assert_eq!(
SymbolPath::from_masm_function_id(id),
SymbolPath::from_iter([
SymbolNameComponent::Root,
SymbolNameComponent::Component("intrinsics".into()),
SymbolNameComponent::Component("mem".into()),
SymbolNameComponent::Leaf("load_felt_unchecked".into()),
])
);Sourcepub fn from_masm_module_id(id: &str) -> Self
pub fn from_masm_module_id(id: &str) -> Self
Converts a str representing a fully-qualified Miden Assembly module path, to it’s equivalent SymbolPath representation.
§Example
use midenc_hir::{SymbolPath, SymbolNameComponent};
assert_eq!(
SymbolPath::from_masm_module_id("intrinsics::mem"),
SymbolPath::from_iter([
SymbolNameComponent::Root,
SymbolNameComponent::Component("intrinsics".into()),
SymbolNameComponent::Component("mem".into()),
])
);Sourcepub fn name(&self) -> SymbolName
pub fn name(&self) -> SymbolName
Returns the leaf component of the symbol path
Sourcepub fn set_name(&mut self, name: SymbolName)
pub fn set_name(&mut self, name: SymbolName)
Set the value of the leaf component of the path, or append it if not yet present
Sourcepub fn namespace(&self) -> Option<SymbolName>
pub fn namespace(&self) -> Option<SymbolName>
Returns the first non-root component of the symbol path, if the path is absolute
Sourcepub fn to_library_path(&self) -> LibraryPath
pub fn to_library_path(&self) -> LibraryPath
Derive a Miden Assembly LibraryPath from this symbol path
Sourcepub fn is_absolute(&self) -> bool
pub fn is_absolute(&self) -> bool
Returns true if this symbol name is fully-qualified
Sourcepub fn has_parent(&self) -> bool
pub fn has_parent(&self) -> bool
Returns true if this symbol name is nested
Sourcepub fn is_prefix_of(&self, other: &Self) -> bool
pub fn is_prefix_of(&self, other: &Self) -> bool
Returns true if self is a prefix of other, i.e. other is a further qualified symbol
reference.
NOTE: If self and other are equal, self is considered a prefix. The caller should
check if the two references are identical if they wish to distinguish the two cases.
Sourcepub fn is_prefixed_by(&self, prefix: &[SymbolNameComponent]) -> bool
pub fn is_prefixed_by(&self, prefix: &[SymbolNameComponent]) -> bool
Returns true if prefix is a prefix of self, i.e. self is a further qualified symbol
reference.
NOTE: If self and prefix are equal, prefix is considered a valid prefix. The caller
should check if the two references are identical if they wish to distinguish the two cases.
Sourcepub fn components(
&self,
) -> impl ExactSizeIterator<Item = SymbolNameComponent> + '_
pub fn components( &self, ) -> impl ExactSizeIterator<Item = SymbolNameComponent> + '_
Returns an iterator over the path components of this symbol name
Sourcepub fn parent(&self) -> Option<SymbolPath>
pub fn parent(&self) -> Option<SymbolPath>
Get the parent of this path, i.e. all but the last component
Sourcepub fn without_leaf(&self) -> Cow<'_, SymbolPath>
pub fn without_leaf(&self) -> Cow<'_, SymbolPath>
Get the portion of this path without the Leaf component, if present.
Trait Implementations§
Source§impl Clone for SymbolPath
impl Clone for SymbolPath
Source§fn clone(&self) -> SymbolPath
fn clone(&self) -> SymbolPath
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SymbolPath
impl Debug for SymbolPath
Source§impl Display for SymbolPath
Print symbol path according to Wasm Component Model rules, i.e.:
impl Display for SymbolPath
Print symbol path according to Wasm Component Model rules, i.e.:
PATH ::= NAMESPACE ":" PACKAGE PACKAGE_PATH? VERSION?
NAMESPACE ::= SYMBOL
PACKAGE ::= SYMBOL (":" SYMBOL)*
PACKAGE_PATH ::= ("/" SYMBOL)+
VERSION ::= "@" VERSION_STRINGThe first component of an absolute path (ignoring the Root node) is expected to be the package
name, i.e. the NAMESPACE ":" PACKAGE part as a single symbol.
The first component of a relative path is expected to be either Component or Leaf
Source§impl From<&SymbolPath> for Callable
impl From<&SymbolPath> for Callable
Source§fn from(value: &SymbolPath) -> Self
fn from(value: &SymbolPath) -> Self
Source§impl From<SymbolPath> for Callable
impl From<SymbolPath> for Callable
Source§fn from(value: SymbolPath) -> Self
fn from(value: SymbolPath) -> Self
Source§impl FromIterator<SymbolNameComponent> for SymbolPath
impl FromIterator<SymbolNameComponent> for SymbolPath
Source§fn from_iter<I>(iter: I) -> Selfwhere
I: IntoIterator<Item = SymbolNameComponent>,
fn from_iter<I>(iter: I) -> Selfwhere
I: IntoIterator<Item = SymbolNameComponent>,
Source§impl Hash for SymbolPath
impl Hash for SymbolPath
Source§impl Ord for SymbolPath
impl Ord for SymbolPath
Source§impl PartialEq for SymbolPath
impl PartialEq for SymbolPath
Source§impl PartialOrd for SymbolPath
impl PartialOrd for SymbolPath
Source§impl PrettyPrint for SymbolPath
impl PrettyPrint for SymbolPath
Source§fn to_pretty_string(&self) -> String
fn to_pretty_string(&self) -> String
Source§fn pretty_print(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn pretty_print(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§impl TryFrom<&SymbolPath> for ComponentId
impl TryFrom<&SymbolPath> for ComponentId
impl Eq for SymbolPath
Auto Trait Implementations§
impl Freeze for SymbolPath
impl RefUnwindSafe for SymbolPath
impl Send for SymbolPath
impl Sync for SymbolPath
impl Unpin for SymbolPath
impl UnwindSafe for SymbolPath
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<T> DynPartialEq for Twhere
T: PartialEq + 'static,
impl<T> DynPartialEq for Twhere
T: PartialEq + 'static,
default fn dyn_eq(&self, rhs: &(dyn DynPartialEq + 'static)) -> bool
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read moreSource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Source§impl<T> PassTarget for Twhere
T: 'static,
impl<T> PassTarget for Twhere
T: 'static,
default fn target_name(_context: &Context) -> Option<OperationName>
default fn into_target( op: &RawEntityRef<Operation, IntrusiveLink>, ) -> EntityRef<'_, T>
default fn into_target_mut( op: &mut RawEntityRef<Operation, IntrusiveLink>, ) -> EntityMut<'_, T>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read moreSource§impl<T, Trait> Verifier<Trait> for Twhere
Trait: ?Sized,
impl<T, Trait> Verifier<Trait> for Twhere
Trait: ?Sized,
Source§const VACUOUS: bool = true
const VACUOUS: bool = true
Verifier sets this flag to true when its implementation is vacuous,
i.e. it always succeeds and is not dependent on runtime context. Read moreSource§default fn should_verify(&self, _context: &Context) -> bool
default fn should_verify(&self, _context: &Context) -> bool
Source§default fn maybe_verify(&self, _context: &Context) -> Result<(), Report>
default fn maybe_verify(&self, _context: &Context) -> Result<(), Report>
true