use super::*;
use core::marker;
#[derive(Clone, Debug)]
pub struct PhantomDataMutator<T> {
_phantom: marker::PhantomData<T>,
}
impl<T> Default for PhantomDataMutator<T> {
fn default() -> Self {
PhantomDataMutator {
_phantom: marker::PhantomData,
}
}
}
pub fn phantom_data<T>() -> PhantomDataMutator<T> {
PhantomDataMutator {
_phantom: marker::PhantomData,
}
}
impl<T> Mutate<marker::PhantomData<T>> for PhantomDataMutator<T> {
#[inline]
fn mutate(&mut self, _c: &mut Candidates, _value: &mut marker::PhantomData<T>) -> Result<()> {
Ok(())
}
#[inline]
fn mutation_count(
&self,
_value: &marker::PhantomData<T>,
_shrink: bool,
) -> core::option::Option<u32> {
Some(0)
}
}
impl<T> Generate<marker::PhantomData<T>> for PhantomDataMutator<T> {
#[inline]
fn generate(&mut self, _ctx: &mut Context) -> Result<marker::PhantomData<T>> {
Ok(marker::PhantomData)
}
}
impl<T> DefaultMutate for marker::PhantomData<T> {
type DefaultMutate = PhantomDataMutator<T>;
}