use qubit_function::{
ArcMutator,
BoxMutator,
Mutator,
MutatorOnce,
RcMutator,
};
struct TestMutator {
multiplier: i32,
}
impl TestMutator {
fn new(multiplier: i32) -> Self {
TestMutator { multiplier }
}
}
impl Mutator<i32> for TestMutator {
fn apply(&self, input: &mut i32) {
*input *= self.multiplier;
}
}
impl Clone for TestMutator {
fn clone(&self) -> Self {
TestMutator {
multiplier: self.multiplier,
}
}
}
#[cfg(test)]
mod wrapper_composition_tests {
use super::{
Mutator,
MutatorOnce,
};
#[test]
fn test_closure_mutate() {
let closure = |x: &mut i32| *x *= 2;
let mut value = 5;
closure.apply(&mut value);
assert_eq!(value, 10);
}
}