pub struct BuiltinSignature {
pub name: &'static str,
pub params: &'static [Param],
pub returns: Ty,
pub type_params: &'static [&'static str],
pub has_rest: bool,
pub where_clauses: &'static [(&'static str, &'static str)],
}Expand description
A complete, static description of one builtin: identifier, arity range, per-parameter types, generic type parameters, return type, and any where-clause bounds the type checker should enforce on call.
Fields§
§name: &'static strBuiltin name as registered in the VM and referenced from Harn source.
params: &'static [Param]Positional parameters in declaration order. Trailing entries with
optional: true define the lower bound of the arity range; the
remaining entries plus has_rest define the upper bound.
returns: TyStatically-known return type. Use Ty::Any when the return is
genuinely dynamic (e.g. json_parse).
type_params: &'static [&'static str]Generic type parameter names declared on this builtin (e.g. ["T"]
for schema_parse<T>).
has_rest: boolTrue when the final parameter is variadic (rest). When set, the effective arity upper bound is unbounded and the runtime will treat trailing args as the rest-list.
where_clauses: &'static [(&'static str, &'static str)]where T: Foo constraints. Each entry binds a generic type
parameter name to the name of an interface it must implement.
Implementations§
Source§impl BuiltinSignature
impl BuiltinSignature
Sourcepub fn required_params(&self) -> usize
pub fn required_params(&self) -> usize
Number of required parameters (those without defaults).
Sourcepub fn is_type_param(&self, name: &str) -> bool
pub fn is_type_param(&self, name: &str) -> bool
True when this builtin recognises name as one of its declared
generic type parameters.
Sourcepub fn is_generic(&self) -> bool
pub fn is_generic(&self) -> bool
True when this builtin declares any generic type parameters.
Sourcepub fn type_param_names(&self) -> Vec<String>
pub fn type_param_names(&self) -> Vec<String>
Materialize the type parameter names as owned strings (for use in
the type checker’s existing scope/binding APIs which key off
Vec<String>).
Sourcepub fn param_type_exprs(&self) -> Vec<TypeExpr>
pub fn param_type_exprs(&self) -> Vec<TypeExpr>
Materialize per-parameter types as owned TypeExprs for the
type checker’s call-site validation. Ty::Any becomes
Named("any"); generic params become Named(T) so the existing
generic-binding logic resolves them through scope.
Sourcepub fn return_type_expr(&self) -> TypeExpr
pub fn return_type_expr(&self) -> TypeExpr
Owned TypeExpr return type. Use Ty::is_any on
BuiltinSignature::returns first if you want to distinguish
“returns any” from “no static return info”.
Sourcepub fn where_clause_strings(&self) -> Vec<(String, String)>
pub fn where_clause_strings(&self) -> Vec<(String, String)>
Where-clause constraints as (type_param, interface) strings.
Trait Implementations§
Source§impl Clone for BuiltinSignature
impl Clone for BuiltinSignature
Source§fn clone(&self) -> BuiltinSignature
fn clone(&self) -> BuiltinSignature
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BuiltinSignature
impl Debug for BuiltinSignature
impl Copy for BuiltinSignature
Auto Trait Implementations§
impl Freeze for BuiltinSignature
impl RefUnwindSafe for BuiltinSignature
impl Send for BuiltinSignature
impl Sync for BuiltinSignature
impl Unpin for BuiltinSignature
impl UnsafeUnpin for BuiltinSignature
impl UnwindSafe for BuiltinSignature
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<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>
renamed to 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);