use crate::error::ProFuzzError;
use crate::mutator::Mutator;
pub trait Corpus
where
Self: Sized,
{
fn from_bytes(buf: Vec<u8>) -> Option<Self>;
fn to_bytes(self) -> Vec<u8>;
fn build(self) -> Vec<u8>;
fn show(&self) -> String;
}
pub trait Transport {
fn title(&self) -> String;
fn connect(&mut self) -> impl std::future::Future<Output = Result<(), ProFuzzError>>;
fn close(&mut self) -> impl std::future::Future<Output = Result<(), ProFuzzError>>;
fn read(
&mut self,
buf: &mut [u8],
) -> impl std::future::Future<Output = Result<usize, ProFuzzError>>;
fn write(&mut self, buf: &[u8]) -> impl std::future::Future<Output = Result<(), ProFuzzError>>;
}
pub trait ResetHandler {
fn reset(&mut self) -> impl std::future::Future<Output = Result<(), ProFuzzError>>;
}
pub trait HealthCheck {
fn is_ok(&mut self) -> impl std::future::Future<Output = Result<bool, ProFuzzError>>;
}
pub trait Mutable {
fn mutate<R: rand::Rng>(&mut self, mutator: &mut Mutator<R>);
}