pub struct BuiltinRegistry { /* private fields */ }Expand description
A dispatch table mapping (TypeTag, method_name) pairs to built-in
implementations.
Also supports global built-in functions (e.g., print, println, debug).
Higher-order methods (those needing callback invocation) are stored separately.
Implementations§
Source§impl BuiltinRegistry
impl BuiltinRegistry
Sourcepub fn register(&mut self, type_tag: TypeTag, name: &str, func: BuiltinFn)
pub fn register(&mut self, type_tag: TypeTag, name: &str, func: BuiltinFn)
Register a method for a specific type.
Sourcepub fn register_ho(
&mut self,
type_tag: TypeTag,
name: &str,
func: HigherOrderBuiltinFn,
)
pub fn register_ho( &mut self, type_tag: TypeTag, name: &str, func: HigherOrderBuiltinFn, )
Register a higher-order method that needs callback invocation.
Sourcepub fn register_global(&mut self, name: &str, func: BuiltinFn)
pub fn register_global(&mut self, name: &str, func: BuiltinFn)
Register a global built-in function.
Sourcepub fn call(
&self,
type_tag: TypeTag,
name: &str,
args: &[Value],
) -> Option<Result<Value, RuntimeError>>
pub fn call( &self, type_tag: TypeTag, name: &str, args: &[Value], ) -> Option<Result<Value, RuntimeError>>
Look up and call a method on a value.
receiver is the value the method is called on, args are the
additional arguments. Returns None if no method is registered,
allowing the interpreter to fall back to other dispatch mechanisms.
Note: this does NOT check higher-order methods. Use [get_ho_method]
for those, since they require a CallbackInvoker.
Sourcepub fn call_global(
&self,
name: &str,
args: &[Value],
) -> Option<Result<Value, RuntimeError>>
pub fn call_global( &self, name: &str, args: &[Value], ) -> Option<Result<Value, RuntimeError>>
Look up and call a global built-in function.
Returns None if no global with that name is registered.
Sourcepub fn get_ho_method(
&self,
type_tag: TypeTag,
name: &str,
) -> Option<HigherOrderBuiltinFn>
pub fn get_ho_method( &self, type_tag: TypeTag, name: &str, ) -> Option<HigherOrderBuiltinFn>
Look up a higher-order method. Returns the function pointer if found.
The caller is responsible for invoking the returned function with
a &mut dyn CallbackInvoker.
Sourcepub fn has_method(&self, type_tag: TypeTag, name: &str) -> bool
pub fn has_method(&self, type_tag: TypeTag, name: &str) -> bool
Check whether a method is registered for the given type (simple or higher-order).
Sourcepub fn has_global(&self, name: &str) -> bool
pub fn has_global(&self, name: &str) -> bool
Check whether a global function is registered.
Sourcepub fn method_keys(&self) -> impl Iterator<Item = (TypeTag, &str)>
pub fn method_keys(&self) -> impl Iterator<Item = (TypeTag, &str)>
Iterate all registered (receiver type, method name) pairs for both
ordinary and higher-order methods. Intended for introspection tools
(vocab emitter, documentation generators).
Sourcepub fn global_names(&self) -> impl Iterator<Item = &str>
pub fn global_names(&self) -> impl Iterator<Item = &str>
Iterate all registered global function names.
Sourcepub fn register_test_builtins(&mut self)
pub fn register_test_builtins(&mut self)
Register test assertion built-ins (expect global and assertion methods).
Call this when running in test mode so that expect(x).to_equal(y) and
related assertion methods are available.
Sourcepub fn register_defaults(&mut self)
pub fn register_defaults(&mut self)
Register the minimal bootstrap set of built-in methods and globals.
This provides just enough to make the interpreter functional:
- Globals:
print,println,debug - String:
len,to_string - List:
len,get,push - Map:
get,set,len
Trait Implementations§
Source§impl Clone for BuiltinRegistry
impl Clone for BuiltinRegistry
Source§fn clone(&self) -> BuiltinRegistry
fn clone(&self) -> BuiltinRegistry
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for BuiltinRegistry
impl RefUnwindSafe for BuiltinRegistry
impl Send for BuiltinRegistry
impl Sync for BuiltinRegistry
impl Unpin for BuiltinRegistry
impl UnsafeUnpin for BuiltinRegistry
impl UnwindSafe for BuiltinRegistry
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);