pub enum Op3Enum {
Replace(Replace),
Ite(Ite),
SubStr(SubStr),
IndexOf(IndexOf),
}
Expand description
An enum representing ternary operations in the string synthesis framework.
This enum includes operations such as Replace
, which substitutes a part of a string with another substring, and Ite
(if-then-else), which selects between two expressions based on a condition.
It also includes SubStr
, which extracts a portion of a string specified by a starting index and length, and IndexOf
, which determines the index of a substring within another string.
These operations are essential for manipulating strings in complex synthesis tasks.
Variants§
Implementations§
Source§impl Op3Enum
impl Op3Enum
Sourcepub fn eval(&self, a1: Value, a2: Value, a3: Value) -> Value
pub fn eval(&self, a1: Value, a2: Value, a3: Value) -> Value
Provides an evaluation method for the Op3Enum
operations.
Invokes the try_eval
method with three provided Value
arguments and returns the second element of the tuple resulting from the try_eval
call.
This method abstracts the direct invocation of operation logic encapsulated in try_eval
, emphasizing the resultant value of the operation within ternary operation contexts.
Source§impl Op3Enum
impl Op3Enum
Sourcepub fn from_name(name: &str, config: &Config) -> Self
pub fn from_name(name: &str, config: &Config) -> Self
Provides a method for creating an instance of an operation from its name and a specified configuration.
The from_name
function takes a string slice representing the name of the operation and a reference to a Config
object.
Utilizing a macro named _do
, it iterates over all possible operations within the Op3Enum
by dynamically executing each operation’s name comparison.
If a match is found, it returns the corresponding operator configured via the from_config
method.
In case no matching operation name is found, the function will terminate execution and issue a panic with an error message indicating the unknown operator.
This method ensures that each operation can be instantiated from a configuration while providing runtime safety against undefined operations.
Sourcepub fn name(&self) -> &'static str
pub fn name(&self) -> &'static str
Provides an implementation to retrieve the name of an operation represented by this item.
This is achieved using a macro to iterate over a series of operations associated with the item, checking if the current instance matches any of these operations and returning its name via a helper function defined for each operation. The logic ensures that for any valid instance of this item, the correct associated name is returned. If none of the operations match, it results in a panic, indicating an unexpected state.
Trait Implementations§
Source§impl Display for Op3Enum
impl Display for Op3Enum
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Formats an Op3Enum
variant into a string.
The functionality uses a macro to match the variant of Op3Enum
and writes its value (a
) to the given formatter.
If the variant matches, the function returns the result of the formatted write operation.
If none of the variants match, it defaults to resolving successfully with an Ok(())
.
The macro crate::for_all_op3!()
is employed to handle all possible variants of Op3Enum
, allowing concise and reusable code patterns for formatting each operation in the enumeration.
Source§impl Enumerator3 for Op3Enum
impl Enumerator3 for Op3Enum
impl Eq for Op3Enum
impl StructuralPartialEq for Op3Enum
Auto Trait Implementations§
impl Freeze for Op3Enum
impl RefUnwindSafe for Op3Enum
impl Send for Op3Enum
impl Sync for Op3Enum
impl Unpin for Op3Enum
impl UnwindSafe for Op3Enum
Blanket Implementations§
Source§impl<T> AllocForAny<T> for T
impl<T> AllocForAny<T> for T
Source§fn galloc(self) -> &'static T
fn galloc(self) -> &'static T
Provides a method to allocate an instance of T
on the heap with a static lifetime.
This implementation of galloc
takes ownership of the T
instance and uses the alloc
function to place it in a location with a static lifetime, presumably managing it in a way that ensures its persistence for the duration of the program.
This can be particularly useful for scenarios where a static lifetime is required, such as when interfacing with systems or patterns that necessitate global state or long-lived data.
Source§fn galloc_mut(self) -> &'static T
fn galloc_mut(self) -> &'static T
Provides a method that moves the instance and returns a reference to it allocated with a static lifetime.
This method utilizes alloc_mut
to perform the allocation, likely involving allocating the resource in a manner that ensures it lives for the entire duration of the application.
These semantics allow the user to safely assume that the reference will not expire during the program’s execution, making it suitable for long-lived data structures or operations that require such guarantees.
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> 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