Use const block instead of trait trick in subscription

This commit is contained in:
Héctor Ramón Jiménez 2025-12-02 20:37:52 +01:00
parent 92ecc18318
commit 2973b01bf5
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -306,7 +306,9 @@ impl<T> Subscription<T> {
F: Fn(T) -> A + MaybeSend + Clone + 'static,
A: 'static,
{
F::assert_zero_size();
const {
check_zero_sized::<F>();
}
struct Map<A, B, F>
where
@ -363,7 +365,9 @@ impl<T> Subscription<T> {
F: Fn(T) -> Option<A> + MaybeSend + Clone + 'static,
A: MaybeSend + 'static,
{
F::assert_zero_size();
const {
check_zero_sized::<F>();
}
struct FilterMap<A, B, F>
where
@ -522,17 +526,6 @@ where
}
}
trait PanicWhenNotZeroSized: Sized {
const _CHECK: () = check_zero_sized::<Self>();
#[allow(path_statements, clippy::no_effect)]
fn assert_zero_size() {
<Self as PanicWhenNotZeroSized>::_CHECK;
}
}
impl<T> PanicWhenNotZeroSized for T {}
const fn check_zero_sized<T>() {
if std::mem::size_of::<T>() != 0 {
panic!(