pub trait Exploit {
// Required methods
fn default() -> Self
where Self: Sized;
fn info(&self) -> Info;
fn exploit(
&self,
payload: &Box<dyn Payload + Send + Sync>,
) -> Result<(), Box<dyn Error>>;
fn opts(&self) -> Vec<Opt>;
fn apply_opts(&mut self, opts: Vec<Opt>) -> Result<(), Box<dyn Error>>;
// Provided methods
fn kind(&self) -> Kind { ... }
fn ranking(&self) -> Ranking { ... }
fn payload_compat(&self) -> PayloadCompat { ... }
}