use serde_derive::Deserialize;
use crate::mutators::bitflipper::BitFlipper;
pub mod bitflipper;
#[derive(Debug, Deserialize, Clone)]
pub enum MutationType {
BitFlipper { width: u8 },
}
#[derive(Debug, Deserialize, Clone)]
pub struct Mutation {
pub range: Option<(usize, usize)>,
pub mutation: MutationType,
}
impl Mutation {
pub const fn new(mutator_type: MutationType, range: Option<(usize, usize)>) -> Self {
Self {
range,
mutation: mutator_type,
}
}
pub fn mutate(&self, bytes: &mut [u8], i: usize) {
match self.mutation {
MutationType::BitFlipper { width } => BitFlipper::mutate(bytes, i, width),
}
}
}