Skip to main content

checkito/
same.rs

1use crate::{generate::Generate, shrink::Shrink, state::State};
2
3#[derive(Clone, Debug)]
4pub struct Same<T: ?Sized>(pub(crate) T);
5
6impl<T: Clone> Generate for Same<T> {
7    type Item = T;
8    type Shrink = Self;
9
10    const CARDINALITY: Option<u128> = Some(1);
11
12    fn generate(&self, _: &mut State) -> Self::Shrink {
13        self.clone()
14    }
15}
16
17impl<T: Clone> Shrink for Same<T> {
18    type Item = T;
19
20    fn item(&self) -> Self::Item {
21        self.0.clone()
22    }
23
24    fn shrink(&mut self) -> Option<Self> {
25        None
26    }
27}