1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use crate::{
generate::{Generate, State},
shrink::Shrink,
};
impl<T> Generate for fn() -> T {
type Item = T;
type Shrink = Self;
fn generate(&self, _: &mut State) -> (Self::Item, Self::Shrink) {
(self(), self.clone())
}
}
impl<T> Shrink for fn() -> T {
type Item = T;
fn generate(&self) -> Self::Item {
self()
}
fn shrink(&mut self) -> Option<Self> {
None
}
}