#[non_exhaustive]pub struct TypeMetadata {
pub span: Span,
pub type_union: TUnion,
pub from_docblock: bool,
pub inferred: bool,
}Expand description
Contains metadata associated with a specific type instance within the type system.
This struct combines the core type information (TUnion) with contextual details
about how and where this type information was determined or declared in the source code
or related documentation.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.span: SpanThe specific location (span) in the source code or documentation that this type metadata corresponds to.
This could be:
- The span of a type annotation (e.g.,
: string). - The span of an expression whose type was inferred (e.g.,
$x = 10-> span of10). - The span of a type mentioned in a documentation block (e.g.,
@param int-> span ofint).
type_union: TUnionThe core representation of the type itself.
from_docblock: boolDistinguishes whether this type information originated from analyzing executable code constructs (e.g., type declarations, assignments) or from documentation blocks.
trueif the type information was extracted from a docblock comment.falseif the type information came from actual code analysis.
inferred: boolIndicates whether this type was explicitly declared in the source or deduced (“inferred”) by the type checker based on context.
trueif the type checker inferred this type (e.g., from a variable initialization like$x = 10;).falseif the type was explicitly written by the user (e.g.,int $x;).
Implementations§
Source§impl TypeMetadata
impl TypeMetadata
Sourcepub fn new(type_union: TUnion, span: Span) -> Self
pub fn new(type_union: TUnion, span: Span) -> Self
Creates new TypeMetadata for an explicitly declared type from code.
This is a convenience constructor assuming the common case where a type is directly specified in the code, and wasn’t just inferred or from a docblock.
§Arguments
type_union: The core type information (TUnion).span: The source code location associated with this type.
§Returns
A new TypeMetadata instance with is_nullable, from_docblock, and inferred set to false.
Sourcepub fn from_docblock(type_union: TUnion, span: Span) -> Self
pub fn from_docblock(type_union: TUnion, span: Span) -> Self
Creates new TypeMetadata for a type extracted from a documentation block.
This constructor is used when type information is sourced from docblock comments rather than executable code.
§Arguments
type_union: The core type information (TUnion).span: The source code location associated with this docblock type.
§Returns
A new TypeMetadata instance with from_docblock set to true and inferred set to false.
Sourcepub fn map_type_union<F>(self, f: F) -> Self
pub fn map_type_union<F>(self, f: F) -> Self
Creates a new TypeMetadata by applying a function to the inner TUnion.
This allows transforming the core type while preserving the surrounding metadata.
§Arguments
f: A function that takes the currentTUnionand returns a newTUnion.
§Returns
A new TypeMetadata instance with the transformed TUnion and the same metadata flags and span.
Trait Implementations§
Source§impl Clone for TypeMetadata
impl Clone for TypeMetadata
Source§fn clone(&self) -> TypeMetadata
fn clone(&self) -> TypeMetadata
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TypeMetadata
impl Debug for TypeMetadata
Source§impl<'de> Deserialize<'de> for TypeMetadata
impl<'de> Deserialize<'de> for TypeMetadata
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 TypeMetadata
impl Hash for TypeMetadata
Source§impl PartialEq for TypeMetadata
impl PartialEq for TypeMetadata
Source§impl Serialize for TypeMetadata
impl Serialize for TypeMetadata
impl Eq for TypeMetadata
impl StructuralPartialEq for TypeMetadata
Auto Trait Implementations§
impl Freeze for TypeMetadata
impl RefUnwindSafe for TypeMetadata
impl Send for TypeMetadata
impl Sync for TypeMetadata
impl Unpin for TypeMetadata
impl UnwindSafe for TypeMetadata
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);