@@ -358,7 +358,8 @@ pub mod macros {
358
358
/// A [`MapObserver`] observes the static map, as oftentimes used for AFL-like coverage information
359
359
///
360
360
/// TODO: enforce `iter() -> AssociatedTypeIter` when generic associated types stabilize
361
- pub trait MapObserver : HasLen + Named + Serialize + serde:: de:: DeserializeOwned
361
+ pub trait MapObserver :
362
+ HasLen + Named + Serialize + serde:: de:: DeserializeOwned + AsRef < Self >
362
363
// where
363
364
// for<'it> &'it Self: IntoIterator<Item = &'it Self::Entry>
364
365
{
@@ -639,6 +640,15 @@ where
639
640
}
640
641
}
641
642
643
+ impl < ' a , T , const DIFFERENTIAL : bool > AsRef < Self > for StdMapObserver < ' a , T , DIFFERENTIAL >
644
+ where
645
+ T : Default + Copy + ' static + Serialize ,
646
+ {
647
+ fn as_ref ( & self ) -> & Self {
648
+ self
649
+ }
650
+ }
651
+
642
652
impl < ' a , T , const DIFFERENTIAL : bool > MapObserver for StdMapObserver < ' a , T , DIFFERENTIAL >
643
653
where
644
654
T : Bounded
@@ -1123,6 +1133,15 @@ where
1123
1133
}
1124
1134
}
1125
1135
1136
+ impl < ' a , T , const N : usize > AsRef < Self > for ConstMapObserver < ' a , T , N >
1137
+ where
1138
+ T : Default + Copy + ' static + Serialize ,
1139
+ {
1140
+ fn as_ref ( & self ) -> & Self {
1141
+ self
1142
+ }
1143
+ }
1144
+
1126
1145
impl < ' a , T , const N : usize > MapObserver for ConstMapObserver < ' a , T , N >
1127
1146
where
1128
1147
T : Bounded
@@ -1435,6 +1454,15 @@ where
1435
1454
}
1436
1455
}
1437
1456
1457
+ impl < ' a , T > AsRef < Self > for VariableMapObserver < ' a , T >
1458
+ where
1459
+ T : Default + Copy + ' static + Serialize + PartialEq + Bounded ,
1460
+ {
1461
+ fn as_ref ( & self ) -> & Self {
1462
+ self
1463
+ }
1464
+ }
1465
+
1438
1466
impl < ' a , T > MapObserver for VariableMapObserver < ' a , T >
1439
1467
where
1440
1468
T : Bounded
@@ -1689,6 +1717,15 @@ where
1689
1717
}
1690
1718
}
1691
1719
1720
+ impl < M > AsRef < Self > for HitcountsMapObserver < M >
1721
+ where
1722
+ M : MapObserver < Entry = u8 > ,
1723
+ {
1724
+ fn as_ref ( & self ) -> & Self {
1725
+ self
1726
+ }
1727
+ }
1728
+
1692
1729
impl < M > MapObserver for HitcountsMapObserver < M >
1693
1730
where
1694
1731
M : MapObserver < Entry = u8 > ,
@@ -1938,6 +1975,16 @@ where
1938
1975
}
1939
1976
}
1940
1977
1978
+ impl < M > AsRef < Self > for HitcountsIterableMapObserver < M >
1979
+ where
1980
+ M : MapObserver < Entry = u8 > ,
1981
+ for < ' it > M : AsIterMut < ' it , Item = u8 > ,
1982
+ {
1983
+ fn as_ref ( & self ) -> & Self {
1984
+ self
1985
+ }
1986
+ }
1987
+
1941
1988
impl < M > MapObserver for HitcountsIterableMapObserver < M >
1942
1989
where
1943
1990
M : MapObserver < Entry = u8 > ,
@@ -2183,6 +2230,15 @@ where
2183
2230
}
2184
2231
}
2185
2232
2233
+ impl < ' a , T , const DIFFERENTIAL : bool > AsRef < Self > for MultiMapObserver < ' a , T , DIFFERENTIAL >
2234
+ where
2235
+ T : ' static + Default + Copy + Serialize + Debug ,
2236
+ {
2237
+ fn as_ref ( & self ) -> & Self {
2238
+ self
2239
+ }
2240
+ }
2241
+
2186
2242
impl < ' a , T , const DIFFERENTIAL : bool > MapObserver for MultiMapObserver < ' a , T , DIFFERENTIAL >
2187
2243
where
2188
2244
T : ' static
@@ -2539,6 +2595,15 @@ where
2539
2595
}
2540
2596
}
2541
2597
2598
+ impl < T > AsRef < Self > for OwnedMapObserver < T >
2599
+ where
2600
+ T : ' static + Default + Copy + Serialize ,
2601
+ {
2602
+ fn as_ref ( & self ) -> & Self {
2603
+ self
2604
+ }
2605
+ }
2606
+
2542
2607
impl < T > MapObserver for OwnedMapObserver < T >
2543
2608
where
2544
2609
T : ' static
0 commit comments