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<GenericTemplate>,
) -> Self
pub fn with_template_definition( self, name: Atom, constraints: Vec<GenericTemplate>, ) -> 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 for the template parameter.
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) -> &AtomMap<Vec<GenericTemplate>>
pub fn get_template_definitions(&self) -> &AtomMap<Vec<GenericTemplate>>
Returns a reference to the template definitions map.
Sourcepub fn get_template_definitions_mut(
&mut self,
) -> &mut AtomMap<Vec<GenericTemplate>>
pub fn get_template_definitions_mut( &mut self, ) -> &mut AtomMap<Vec<GenericTemplate>>
Returns a mutable reference to the template definitions map.
Sourcepub fn get_resolved_template_types(&self) -> &AtomMap<TUnion>
pub fn get_resolved_template_types(&self) -> &AtomMap<TUnion>
Returns a reference to the resolved template types map.
Sourcepub fn get_resolved_template_types_mut(&mut self) -> &mut AtomMap<TUnion>
pub fn get_resolved_template_types_mut(&mut self) -> &mut AtomMap<TUnion>
Returns a mutable reference to the resolved template types map.
Sourcepub fn get_template_definition(
&self,
name: &Atom,
) -> Option<&Vec<GenericTemplate>>
pub fn get_template_definition( &self, name: &Atom, ) -> Option<&Vec<GenericTemplate>>
Sourcepub fn has_template_definition(&self, name: &Atom) -> bool
pub fn has_template_definition(&self, name: &Atom) -> bool
Sourcepub fn with_type_aliases(self, aliases: AtomSet) -> Self
pub fn with_type_aliases(self, aliases: AtomSet) -> Self
Sourcepub fn with_type_alias(self, name: Atom) -> Self
pub fn with_type_alias(self, name: Atom) -> Self
Sourcepub fn has_type_alias(&self, name: &Atom) -> bool
pub fn has_type_alias(&self, name: &Atom) -> bool
Checks if a specific type alias is defined in this context.
§Arguments
name: The name of the type alias to check.
Sourcepub fn with_imported_type_alias(
self,
local_name: Atom,
source_class: Atom,
original_name: Atom,
) -> Self
pub fn with_imported_type_alias( self, local_name: Atom, source_class: Atom, original_name: Atom, ) -> Self
Adds an imported type alias to this context.
§Arguments
local_name: The local name of the imported alias (possibly renamed with “as”).source_class: The FQCN of the class where the type alias is defined.original_name: The original name of the type alias in the source class.
Sourcepub fn has_imported_type_alias(&self, name: &Atom) -> bool
pub fn has_imported_type_alias(&self, name: &Atom) -> bool
Checks if a specific imported type alias is defined in this context.
§Arguments
name: The local name of the imported alias to check.
Sourcepub fn get_resolved_template_type(&self, name: &Atom) -> Option<&TUnion>
pub fn get_resolved_template_type(&self, name: &Atom) -> Option<&TUnion>
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: &Atom) -> bool
pub fn is_template_resolved(&self, name: &Atom) -> 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 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);