pub struct BruteForce<Insn, InputParameters, ReturnValue: Clone, TargetFunction: Callable<InputParameters, ReturnValue>, Searchable: Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn>> {
pub count: usize,
/* private fields */
}Expand description
Performs a brute force search over a given search space Searchable
Fields§
§count: usizeKeeps track of how many iterations the bruteforce search has been through.
Implementations§
Source§impl<Insn, InputParameters: Copy + Vals, ReturnValue: Vals + PartialEq + Clone, TargetFunction: Callable<InputParameters, ReturnValue>, Searchable: Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn> + Clone> BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn, InputParameters: Copy + Vals, ReturnValue: Vals + PartialEq + Clone, TargetFunction: Callable<InputParameters, ReturnValue>, Searchable: Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn> + Clone> BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
Sourcepub fn new(
target_function: TargetFunction,
initial_candidate: Searchable,
) -> Self
pub fn new( target_function: TargetFunction, initial_candidate: Searchable, ) -> Self
Constructs a new BruteForce
Sourcepub fn candidate(&self) -> &Searchable
pub fn candidate(&self) -> &Searchable
Returns the candidate currently under consideration
Sourcepub fn step(&mut self) -> IterationResult
pub fn step(&mut self) -> IterationResult
Advances the candidate to the next position in the search space
Sourcepub fn search(&mut self) -> Option<Searchable>
pub fn search(&mut self) -> Option<Searchable>
Returns the next function that matches the target function
Examples found in repository?
examples/ng.rs (line 21)
13fn main() {
14 let target_function = zero as fn(u8) -> RunResult<u8>;
15
16 // do a bruteforce search for Z80 machine code programs implementing the same function
17 let mut bruteforce = strop::mips::O32::default()
18 .trace()
19 .to_bruteforce(target_function);
20
21 let bf = bruteforce.search().unwrap();
22
23 println!("An equivalent subroutine we found by bruteforce search,");
24 println!("after {} iterations.", bruteforce.count);
25 bf.dasm();
26}Trait Implementations§
Source§impl<Insn: Clone, InputParameters: Clone, ReturnValue: Clone + Clone, TargetFunction: Clone + Callable<InputParameters, ReturnValue>, Searchable: Clone + Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn>> Clone for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn: Clone, InputParameters: Clone, ReturnValue: Clone + Clone, TargetFunction: Clone + Callable<InputParameters, ReturnValue>, Searchable: Clone + Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn>> Clone for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
Source§fn clone(
&self,
) -> BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
fn clone( &self, ) -> BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Insn: Debug, InputParameters: Debug, ReturnValue: Debug + Clone, TargetFunction: Debug + Callable<InputParameters, ReturnValue>, Searchable: Debug + Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn>> Debug for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn: Debug, InputParameters: Debug, ReturnValue: Debug + Clone, TargetFunction: Debug + Callable<InputParameters, ReturnValue>, Searchable: Debug + Callable<InputParameters, ReturnValue> + BruteforceSearch<Insn>> Debug for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
Auto Trait Implementations§
impl<Insn, InputParameters, ReturnValue, TargetFunction, Searchable> Freeze for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn, InputParameters, ReturnValue, TargetFunction, Searchable> RefUnwindSafe for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>where
TargetFunction: RefUnwindSafe,
Searchable: RefUnwindSafe,
InputParameters: RefUnwindSafe,
ReturnValue: RefUnwindSafe,
Insn: RefUnwindSafe,
impl<Insn, InputParameters, ReturnValue, TargetFunction, Searchable> Send for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn, InputParameters, ReturnValue, TargetFunction, Searchable> Sync for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn, InputParameters, ReturnValue, TargetFunction, Searchable> Unpin for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>
impl<Insn, InputParameters, ReturnValue, TargetFunction, Searchable> UnwindSafe for BruteForce<Insn, InputParameters, ReturnValue, TargetFunction, Searchable>where
TargetFunction: UnwindSafe,
Searchable: UnwindSafe,
InputParameters: UnwindSafe,
ReturnValue: UnwindSafe,
Insn: UnwindSafe,
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
Mutably borrows from an owned value. Read more