pub struct Problem {
pub nt: usize,
pub value: Value,
pub used_cost: usize,
}
Expand description
A struct represents a synthesis problem within the backward deduction process of the string synthesis algorithm.
This structure contains three primary fields: nt
, which holds the non-terminal symbol represented as an index, value
, which associates a Value
to the synthesis task, and used_cost
, which tracks the cost incurred during the deduction process for this particular problem instance.
Fields§
§nt: usize
§value: Value
§used_cost: usize
Implementations§
Source§impl Problem
impl Problem
Sourcepub fn with_value(self, v: Value) -> Problem
pub fn with_value(self, v: Value) -> Problem
Updates the associated value in a synthesis subproblem and returns the modified instance. This method consumes the current problem instance, replacing its stored value with the provided one, and returns the updated problem for further synthesis processing.
Sourcepub fn with_nt(self, nt: usize, v: Value) -> Problem
pub fn with_nt(self, nt: usize, v: Value) -> Problem
Updates an existing synthesis subproblem instance with a new non-terminal index and associated value. This method takes ownership of the current instance, sets its non-terminal field to the supplied index and updates its associated value, and then returns the modified instance for chaining or further use.
Sourcepub fn root(nt: usize, value: Value) -> Problem
pub fn root(nt: usize, value: Value) -> Problem
Creates a new synthesis subproblem with a specified non-terminal index and associated value, initializing the accumulated cost to zero.
Initializes a Problem instance intended to represent the root of a synthesis task in the backward deduction process, ensuring that the deduction cost starts at zero.
Sourcepub fn inccost(self) -> Problem
pub fn inccost(self) -> Problem
Increments the accrued cost associated with a synthesis subproblem and returns the updated instance.
This method updates the internal cost metric by adding one to it, allowing the overall synthesis process to keep track of the computational expense incurred while performing backward deduction. The function consumes the current instance, modifies its cost field, and returns the modified version for further processing.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Problem
impl RefUnwindSafe for Problem
impl Send for Problem
impl Sync for Problem
impl Unpin for Problem
impl UnwindSafe for Problem
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<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