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}