pub struct Replace(pub usize, pub usize);
Expand description
A struct that represents a string replacement operation.
It includes two public fields, both of type usize
, which likely denote positions or lengths in a string where a replacement operation is intended to take place.
The straightforward structure of this item suggests it serves as a utility to encapsulate parameters for a replace-like task within a larger synthesis or transformation process.
Tuple Fields§
§0: usize
§1: usize
Implementations§
Source§impl Replace
impl Replace
Sourcepub fn from_config(config: &Config) -> Self
pub fn from_config(config: &Config) -> Self
Creates a new instance by extracting configuration values.
It fetches the “cost” and “enum_replace_cost” from the given Config
object, setting them as the first and second elements respectively.
If the configuration values are not present, it defaults to using 1 for “cost” and 3 for “enum_replace_cost”.
This approach allows the object to be instantiated with specific costs based on the provided configuration, facilitating customizability within the synthesis framework.
Sourcepub fn name() -> &'static str
pub fn name() -> &'static str
Returns the name associated with the Replace
operation.
This functionality provides a static method that outputs the string "str.replace"
, serving as an identifier for the operation within the synthesis framework.
This is useful for referencing the operation in logs, configuration, or other parts of the system where consistent naming is necessary.
Trait Implementations§
Source§impl Default for Replace
impl Default for Replace
Source§fn default() -> Self
fn default() -> Self
Creates a new instance with default configuration.
This method initializes the instance using the from_config
function, passing a default configuration.
The implementation implies the Replace
structure can be configured with external settings, yet defaults allow creating a baseline instance without specifying particular attributes.
Source§impl Display for Replace
impl Display for Replace
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Formats the Replace
instance for display purposes.
This implementation of the fmt
function, part of the std::fmt
module, uses the name
method of the Replace
struct itself to provide a formatted representation.
The formatted output is directed to a given formatter instance, which integrates the Replace
instance into a formatted output stream.
Source§impl Enumerator3 for Replace
impl Enumerator3 for Replace
Source§fn enumerate(
&self,
this: &'static Op3Enum,
exec: &'static Executor,
nt: [usize; 3],
) -> Result<(), ()>
fn enumerate( &self, this: &'static Op3Enum, exec: &'static Executor, nt: [usize; 3], ) -> Result<(), ()>
Enumerates possible expressions in the context of the synthesis problem.
This function first checks if the executor’s available size meets the minimum cost requirement, terminating early if it does not.
It calculates the total allowable size for enumeration and iterates over combinations of sub-expressions e1, e2, and e3 from the executor’s data, constrained by the maximum specified size.
Within these loops, it constructs a ternary operation expression with the provided Op3Enum
.
The function attempts to evaluate this new expression using given values, and if successful, it proceeds to enumerate the expression in the executor with its evaluated value.
The process ensures that only valid expressions with feasible evaluations are considered, thus optimizing the string synthesis tasks.
Source§impl Op3 for Replace
impl Op3 for Replace
Source§fn cost(&self) -> usize
fn cost(&self) -> usize
Provides functionality to calculate the cost of a Replace
operation.
The cost
method, when called on an instance of Replace
, returns the first element of the tuple.
This represents the operational cost or significance of the replacement process defined by the instance.
Source§fn try_eval(&self, a1: Value, a2: Value, a3: Value) -> (bool, Value)
fn try_eval(&self, a1: Value, a2: Value, a3: Value) -> (bool, Value)
Provides a method to attempt the evaluation of a replacement operation within a given context of string values.
This method takes three Value
parameters, a1
, a2
, and a3
, assuming they are all strings.
It performs a replacement operation using the Rust replacen
string method, which replaces the first occurrence of a substring (from a1
and a2
combinations) with a new string (a3
).
The use of itertools::izip!
allows iterating over the characters of the input strings in parallel, applying the replacement on each character triplet.
If the inputs match the expected string types, the method returns a tuple indicating success and the resulting string; otherwise, it returns a tuple indicating failure with a Value::Null
.
The galloc_str
and galloc_scollect
methods are employed to efficiently handle memory allocation for the resulting strings.
impl Copy for Replace
impl Eq for Replace
impl StructuralPartialEq for Replace
Auto Trait Implementations§
impl Freeze for Replace
impl RefUnwindSafe for Replace
impl Send for Replace
impl Sync for Replace
impl Unpin for Replace
impl UnwindSafe for Replace
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