pub struct TUnion {
pub types: Cow<'static, [TAtomic]>,
pub flags: UnionFlags,
}Fields§
§types: Cow<'static, [TAtomic]>§flags: UnionFlagsImplementations§
Source§impl TUnion
impl TUnion
Sourcepub fn new(types: Cow<'static, [TAtomic]>) -> TUnion
pub fn new(types: Cow<'static, [TAtomic]>) -> TUnion
The primary constructor for creating a TUnion from a Cow.
This is the most basic way to create a TUnion and is used by both the
zero-allocation static helpers and the from_vec constructor.
Sourcepub fn from_vec(types: Vec<TAtomic>) -> TUnion
pub fn from_vec(types: Vec<TAtomic>) -> TUnion
Creates a TUnion from an owned Vec, performing necessary cleanup.
This preserves the original logic for cleaning up dynamically created unions,
such as removing redundant never types.
§Panics
In debug builds, panics if:
- The input Vec is empty (unions must contain at least one type)
- The input contains a mix of
nevertypes with other types (invalid union construction)
Sourcepub fn from_single(atomic: Cow<'static, TAtomic>) -> TUnion
pub fn from_single(atomic: Cow<'static, TAtomic>) -> TUnion
Creates a TUnion from a single atomic type, which can be either
borrowed from a static source or owned.
This function is a key optimization point. When passed a Cow::Borrowed,
it creates the TUnion without any heap allocation.
Sourcepub fn from_atomic(atomic: TAtomic) -> TUnion
pub fn from_atomic(atomic: TAtomic) -> TUnion
Creates a TUnion from a single owned atomic type.
pub fn set_possibly_undefined( &mut self, possibly_undefined: bool, from_try: Option<bool>, )
pub const fn had_template(&self) -> bool
pub const fn by_reference(&self) -> bool
pub const fn reference_free(&self) -> bool
pub const fn possibly_undefined_from_try(&self) -> bool
pub const fn possibly_undefined(&self) -> bool
pub const fn ignore_nullable_issues(&self) -> bool
pub const fn ignore_falsable_issues(&self) -> bool
pub const fn from_template_default(&self) -> bool
pub const fn populated(&self) -> bool
pub fn set_had_template(&mut self, value: bool)
pub fn set_by_reference(&mut self, value: bool)
pub fn set_reference_free(&mut self, value: bool)
pub fn set_possibly_undefined_from_try(&mut self, value: bool)
pub fn set_ignore_nullable_issues(&mut self, value: bool)
pub fn set_ignore_falsable_issues(&mut self, value: bool)
pub fn set_from_template_default(&mut self, value: bool)
pub fn set_populated(&mut self, value: bool)
Sourcepub fn clone_with_types(&self, types: Vec<TAtomic>) -> TUnion
pub fn clone_with_types(&self, types: Vec<TAtomic>) -> TUnion
Creates a new TUnion with the same properties as the original, but with a new set of types.
pub fn to_non_nullable(&self) -> TUnion
pub fn to_truthy(&self) -> TUnion
pub fn get_non_nullable_types(&self) -> Vec<TAtomic>
pub fn get_truthy_types(&self) -> Vec<TAtomic>
Sourcepub fn as_nullable(self) -> TUnion
pub fn as_nullable(self) -> TUnion
Adds null to the union type, making it nullable.
Sourcepub fn remove_type(&mut self, bad_type: &TAtomic)
pub fn remove_type(&mut self, bad_type: &TAtomic)
Removes a specific atomic type from the union.
Sourcepub fn replace_type(&mut self, remove_type: &TAtomic, add_type: TAtomic)
pub fn replace_type(&mut self, remove_type: &TAtomic, add_type: TAtomic)
Replaces a specific atomic type in the union with a new type.
pub fn is_int(&self) -> bool
pub fn has_int_or_float(&self) -> bool
pub fn has_int_and_float(&self) -> bool
pub fn has_int_and_string(&self) -> bool
pub fn has_int(&self) -> bool
pub fn has_float(&self) -> bool
pub fn is_array_key(&self) -> bool
pub fn is_any_string(&self) -> bool
pub fn is_string(&self) -> bool
pub fn is_always_array_key(&self, ignore_never: bool) -> bool
pub fn is_non_empty_string(&self) -> bool
pub fn is_empty_array(&self) -> bool
pub fn has_string(&self) -> bool
pub fn is_float(&self) -> bool
pub fn is_bool(&self) -> bool
pub fn is_never(&self) -> bool
pub fn is_never_template(&self) -> bool
pub fn is_placeholder(&self) -> bool
pub fn is_true(&self) -> bool
pub fn is_false(&self) -> bool
pub fn is_nonnull(&self) -> bool
pub fn is_numeric(&self) -> bool
pub fn is_int_or_float(&self) -> bool
Sourcepub fn effective_int_or_float(&self) -> Option<bool>
pub fn effective_int_or_float(&self) -> Option<bool>
Returns Some(true) if all types are effectively int, Some(false) if all are effectively float,
or None if mixed or neither. Handles unions like 1|2 (all int) or 3.4|4.5 (all float).
pub fn is_mixed(&self) -> bool
pub fn is_mixed_template(&self) -> bool
pub fn has_mixed(&self) -> bool
pub fn has_mixed_template(&self) -> bool
pub fn has_nullable_mixed(&self) -> bool
pub fn has_void(&self) -> bool
pub fn has_null(&self) -> bool
pub fn has_nullish(&self) -> bool
pub fn is_nullable_mixed(&self) -> bool
pub fn is_falsy_mixed(&self) -> bool
pub fn is_vanilla_mixed(&self) -> bool
pub fn is_templated_as_vanilla_mixed(&self) -> bool
pub fn has_template_or_static(&self) -> bool
pub fn has_template(&self) -> bool
pub fn has_template_types(&self) -> bool
pub fn get_template_types(&self) -> Vec<&TAtomic>
pub fn is_objecty(&self) -> bool
pub fn is_generator(&self) -> bool
pub fn extends_or_implements( &self, codebase: &CodebaseMetadata, interface: &str, ) -> bool
pub fn is_generic_parameter(&self) -> bool
pub fn get_generic_parameter_constraint(&self) -> Option<&TUnion>
pub fn is_null(&self) -> bool
pub fn is_nullable(&self) -> bool
pub fn is_void(&self) -> bool
pub fn is_voidable(&self) -> bool
pub fn has_resource(&self) -> bool
pub fn is_resource(&self) -> bool
pub fn is_array(&self) -> bool
pub fn is_list(&self) -> bool
pub fn is_vanilla_array(&self) -> bool
pub fn is_keyed_array(&self) -> bool
pub fn is_falsable(&self) -> bool
pub fn has_bool(&self) -> bool
Sourcepub fn has_scalar(&self) -> bool
pub fn has_scalar(&self) -> bool
Checks if the union explicitly contains the generic scalar type.
This is a specific check for the scalar type itself, not for a
combination of types that would form a scalar (e.g., int|string|bool|float).
For that, see has_scalar_combination.
Sourcepub fn has_scalar_combination(&self) -> bool
pub fn has_scalar_combination(&self) -> bool
Checks if the union contains a combination of types that is equivalent
to the generic scalar type (i.e., contains int, float, bool, and string).
pub fn has_array_key(&self) -> bool
pub fn has_iterable(&self) -> bool
pub fn has_array(&self) -> bool
pub fn has_traversable(&self, codebase: &CodebaseMetadata) -> bool
pub fn has_array_key_like(&self) -> bool
pub fn has_numeric(&self) -> bool
pub fn is_always_truthy(&self) -> bool
pub fn is_always_falsy(&self) -> bool
pub fn is_literal_of(&self, other: &TUnion) -> bool
pub fn all_literals(&self) -> bool
pub fn has_static_object(&self) -> bool
pub fn is_static_object(&self) -> bool
pub fn is_single(&self) -> bool
pub fn get_single_string(&self) -> Option<&TString>
pub fn get_single_array(&self) -> Option<&TArray>
pub fn get_single_bool(&self) -> Option<&TBool>
pub fn get_single_named_object(&self) -> Option<&TNamedObject>
pub fn get_single_shaped_object(&self) -> Option<&TObjectWithProperties>
pub fn get_single(&self) -> &TAtomic
pub fn get_single_owned(self) -> TAtomic
pub fn is_named_object(&self) -> bool
pub fn is_enum(&self) -> bool
pub fn is_enum_case(&self) -> bool
pub fn is_single_enum_case(&self) -> bool
pub fn has_named_object(&self) -> bool
pub fn has_object(&self) -> bool
pub fn has_callable(&self) -> bool
pub fn is_callable(&self) -> bool
pub fn has_object_type(&self) -> bool
Sourcepub fn get_enum_cases(&self) -> Vec<(Atom, Option<Atom>)>
pub fn get_enum_cases(&self) -> Vec<(Atom, Option<Atom>)>
Return a vector of pairs containing the enum name, and their case name if specified.
pub fn get_single_int(&self) -> Option<TInteger>
pub fn get_single_literal_int_value(&self) -> Option<i64>
pub fn get_single_maximum_int_value(&self) -> Option<i64>
pub fn get_single_minimum_int_value(&self) -> Option<i64>
pub fn get_single_literal_float_value(&self) -> Option<f64>
pub fn get_single_literal_string_value(&self) -> Option<&str>
pub fn get_single_class_string_value(&self) -> Option<Atom>
pub fn get_single_array_key(&self) -> Option<ArrayKey>
pub fn get_single_key_of_array_like(&self) -> Option<TUnion>
pub fn get_single_value_of_array_like(&self) -> Option<Cow<'_, TUnion>>
pub fn get_literal_ints(&self) -> Vec<&TAtomic>
pub fn get_literal_strings(&self) -> Vec<&TAtomic>
pub fn get_literal_string_values(&self) -> Vec<Option<Atom>>
pub fn has_literal_float(&self) -> bool
pub fn has_literal_int(&self) -> bool
pub fn has_literal_string(&self) -> bool
pub fn has_literal_value(&self) -> bool
pub fn accepts_false(&self) -> bool
pub fn accepts_null(&self) -> bool
Trait Implementations§
Source§impl<'de> Deserialize<'de> for TUnion
impl<'de> Deserialize<'de> for TUnion
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 Ord for TUnion
impl Ord for TUnion
Source§impl PartialOrd for TUnion
impl PartialOrd for TUnion
Source§impl TType for TUnion
impl TType for TUnion
Source§fn get_child_nodes(&self) -> Vec<TypeRef<'_>>
fn get_child_nodes(&self) -> Vec<TypeRef<'_>>
fn needs_population(&self) -> bool
fn is_expandable(&self) -> bool
Source§fn is_complex(&self) -> bool
fn is_complex(&self) -> bool
Source§fn get_id(&self) -> Atom
fn get_id(&self) -> Atom
fn get_pretty_id_with_indent(&self, indent: usize) -> Atom
Source§fn get_all_child_nodes(&self) -> Vec<TypeRef<'_>>
fn get_all_child_nodes(&self) -> Vec<TypeRef<'_>>
Source§fn can_be_intersected(&self) -> bool
fn can_be_intersected(&self) -> bool
&B&S).Source§fn get_intersection_types(&self) -> Option<&[TAtomic]>
fn get_intersection_types(&self) -> Option<&[TAtomic]>
&B&S), if any. Contains boxed atomic types.Source§fn get_intersection_types_mut(&mut self) -> Option<&mut Vec<TAtomic>>
fn get_intersection_types_mut(&mut self) -> Option<&mut Vec<TAtomic>>
&B&S), if any. Contains boxed atomic types.Source§fn has_intersection_types(&self) -> bool
fn has_intersection_types(&self) -> bool
Source§fn add_intersection_type(&mut self, _intersection_type: TAtomic) -> bool
fn add_intersection_type(&mut self, _intersection_type: TAtomic) -> bool
fn get_pretty_id(&self) -> Atom
impl Eq for TUnion
Auto Trait Implementations§
impl Freeze for TUnion
impl RefUnwindSafe for TUnion
impl Send for TUnion
impl Sync for TUnion
impl Unpin for TUnion
impl UnwindSafe for TUnion
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<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);