pub struct FunctionsStore { /* private fields */ }Expand description
A store that maps functions to their assigned names.
FunctionsStore maintains a registry of functions and their human-readable names,
which is useful for displaying and debugging expression functions. The store
allows for consistent name resolution of functions used in expressions.
§Examples
use bc_envelope::prelude::*;
use bc_envelope::extension::expressions::{FunctionsStore, functions};
// Create a store with some known functions
let store = FunctionsStore::new([
functions::ADD,
functions::SUB,
functions::MUL
]);
// Look up the name of a function
assert_eq!(store.name(&functions::ADD), "add");Implementations§
Source§impl FunctionsStore
impl FunctionsStore
Sourcepub fn new<T>(functions: T) -> Selfwhere
T: IntoIterator<Item = Function>,
pub fn new<T>(functions: T) -> Selfwhere
T: IntoIterator<Item = Function>,
Creates a new FunctionsStore with the given functions.
§Parameters
functions- An iterable ofFunctioninstances to store
§Returns
A new FunctionsStore containing the functions
§Examples
use bc_envelope::prelude::*;
use bc_envelope::extension::expressions::{FunctionsStore, functions};
// Create a store with standard arithmetic functions
let store = FunctionsStore::new([
functions::ADD,
functions::SUB,
functions::MUL,
functions::DIV
]);Sourcepub fn insert(&mut self, function: Function)
pub fn insert(&mut self, function: Function)
Inserts a function into the store.
§Parameters
function- The function to insert
§Examples
use bc_envelope::prelude::*;
use bc_envelope::extension::expressions::{FunctionsStore, Function, functions};
let mut store = FunctionsStore::default();
store.insert(functions::ADD);
store.insert(Function::new_with_static_name(100, "myCustomFunction"));Sourcepub fn assigned_name(&self, function: &Function) -> Option<&str>
pub fn assigned_name(&self, function: &Function) -> Option<&str>
Returns the assigned name for a function, if it exists in the store.
§Parameters
function- The function to look up
§Returns
Some string slice with the function name if found, or None if not found
§Examples
use bc_envelope::prelude::*;
use bc_envelope::extension::expressions::{FunctionsStore, functions};
let store = FunctionsStore::new([functions::ADD]);
assert_eq!(store.assigned_name(&functions::ADD), Some("add"));
assert_eq!(store.assigned_name(&functions::SUB), None);Sourcepub fn name(&self, function: &Function) -> String
pub fn name(&self, function: &Function) -> String
Returns the name for a function, either from this store or from the function itself.
If the function exists in the store, returns its assigned name. Otherwise, returns the function’s own name.
§Parameters
function- The function to look up
§Returns
The name of the function as a String
§Examples
use bc_envelope::prelude::*;
use bc_envelope::extension::expressions::{FunctionsStore, functions};
let store = FunctionsStore::new([functions::ADD]);
assert_eq!(store.name(&functions::ADD), "add");
// Not in store, so uses function's own name
assert_eq!(store.name(&functions::SUB), "sub");Sourcepub fn name_for_function(
function: &Function,
functions: Option<&Self>,
) -> String
pub fn name_for_function( function: &Function, functions: Option<&Self>, ) -> String
A static method that returns the name of a function, using an optional store.
This utility method is useful when you have an optional store and want to get a function name without additional unwrapping logic.
§Parameters
function- The function to look upfunctions- An optional reference to a FunctionsStore
§Returns
The name of the function as a String
§Examples
use bc_envelope::prelude::*;
use bc_envelope::extension::expressions::{FunctionsStore, functions};
let store = FunctionsStore::new([functions::ADD]);
// Using the store
assert_eq!(
FunctionsStore::name_for_function(&functions::ADD, Some(&store)),
"add"
);
// Without a store
assert_eq!(
FunctionsStore::name_for_function(&functions::ADD, None),
"add"
);Trait Implementations§
Source§impl Clone for FunctionsStore
impl Clone for FunctionsStore
Source§fn clone(&self) -> FunctionsStore
fn clone(&self) -> FunctionsStore
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FunctionsStore
impl Debug for FunctionsStore
Auto Trait Implementations§
impl Freeze for FunctionsStore
impl RefUnwindSafe for FunctionsStore
impl Send for FunctionsStore
impl Sync for FunctionsStore
impl Unpin for FunctionsStore
impl UnwindSafe for FunctionsStore
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> 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 more