pub struct TypeResolutionContext { /* private fields */ }Expand description
Holds contextual information necessary for resolving generic template types (@template).
This context typically includes the definitions of template parameters available in the current scope
(e.g., from class or function @template tags) and any concrete types that these templates
have been resolved to (e.g., when a generic class is instantiated or a generic method is called).
Implementations§
Source§impl TypeResolutionContext
impl TypeResolutionContext
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new, empty TypeResolutionContext with no defined or resolved template types.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Checks if this context is empty, meaning it has no template definitions or resolved types.
Sourcepub fn with_template_definition(
self,
name: Atom,
constraints: Vec<(GenericParent, TUnion)>,
) -> Self
pub fn with_template_definition( self, name: Atom, constraints: Vec<(GenericParent, TUnion)>, ) -> Self
Adds a template type definition (e.g., from an @template T of Constraint tag).
§Arguments
name: The name of the template parameter (e.g.,"T").constraints: A list of constraints, each specifying the origin (parent) and the constraint type.
Sourcepub fn with_resolved_template_type(
self,
name: Atom,
resolved_type: TUnion,
) -> Self
pub fn with_resolved_template_type( self, name: Atom, resolved_type: TUnion, ) -> Self
Adds a mapping indicating that a template parameter resolves to a specific concrete type within this context.
§Arguments
name: The name of the template parameter (e.g.,"T").resolved_type: The concreteTUniontype thatnameresolves to here.
Sourcepub fn get_template_definitions(
&self,
) -> &[(Atom, Vec<(GenericParent, TUnion)>)]
pub fn get_template_definitions( &self, ) -> &[(Atom, Vec<(GenericParent, TUnion)>)]
Returns a slice of the defined template parameters and their constraints for this context.
Sourcepub fn get_template_definitions_mut(
&mut self,
) -> &mut [(Atom, Vec<(GenericParent, TUnion)>)]
pub fn get_template_definitions_mut( &mut self, ) -> &mut [(Atom, Vec<(GenericParent, TUnion)>)]
Returns a mutable slice of the defined template parameters and their constraints for this context.
Sourcepub fn get_resolved_template_types(&self) -> &[(Atom, TUnion)]
pub fn get_resolved_template_types(&self) -> &[(Atom, TUnion)]
Returns a slice of the template parameters that have resolved to concrete types in this context.
Sourcepub fn get_resolved_template_types_mut(&mut self) -> &mut [(Atom, TUnion)]
pub fn get_resolved_template_types_mut(&mut self) -> &mut [(Atom, TUnion)]
Returns a mutable slice of the template parameters that have resolved to concrete types in this context.
Sourcepub fn get_template_definition(
&self,
name: &str,
) -> Option<&Vec<(GenericParent, TUnion)>>
pub fn get_template_definition( &self, name: &str, ) -> Option<&Vec<(GenericParent, TUnion)>>
Sourcepub fn has_template_definition(&self, name: &str) -> bool
pub fn has_template_definition(&self, name: &str) -> bool
Sourcepub fn get_resolved_template_type(&self, name: &str) -> Option<&TUnion>
pub fn get_resolved_template_type(&self, name: &str) -> Option<&TUnion>
Looks up the concrete type that a specific template parameter resolves to in this context.
§Arguments
name: The name of the template parameter (e.g.,"T") to look up.
§Returns
Some containing a reference to the resolved TUnion type if found, None otherwise.
Note: If multiple entries exist for the same name (due to shadowing or errors),
this currently returns the first match found.
Sourcepub fn has_templates(&self) -> bool
pub fn has_templates(&self) -> bool
Checks if this context contains any template definitions or resolved template types.
Sourcepub fn is_template_resolved(&self, name: &str) -> bool
pub fn is_template_resolved(&self, name: &str) -> bool
Checks if a specific template parameter has a concrete resolved type in this context.
Sourcepub fn merge(&mut self, other: TypeResolutionContext)
pub fn merge(&mut self, other: TypeResolutionContext)
Merges another TypeResolutionContext into this one, combining their template definitions
and resolved types.
Trait Implementations§
Source§impl Clone for TypeResolutionContext
impl Clone for TypeResolutionContext
Source§fn clone(&self) -> TypeResolutionContext
fn clone(&self) -> TypeResolutionContext
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TypeResolutionContext
impl Debug for TypeResolutionContext
Source§impl Default for TypeResolutionContext
Provides a default, empty type resolution context.
impl Default for TypeResolutionContext
Provides a default, empty type resolution context.
Source§impl<'de> Deserialize<'de> for TypeResolutionContext
impl<'de> Deserialize<'de> for TypeResolutionContext
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Hash for TypeResolutionContext
impl Hash for TypeResolutionContext
Source§impl PartialEq for TypeResolutionContext
impl PartialEq for TypeResolutionContext
Source§impl Serialize for TypeResolutionContext
impl Serialize for TypeResolutionContext
impl Eq for TypeResolutionContext
impl StructuralPartialEq for TypeResolutionContext
Auto Trait Implementations§
impl Freeze for TypeResolutionContext
impl RefUnwindSafe for TypeResolutionContext
impl Send for TypeResolutionContext
impl Sync for TypeResolutionContext
impl Unpin for TypeResolutionContext
impl UnwindSafe for TypeResolutionContext
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> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> 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<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> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);