bitcode/serde/
guard.rs

1use crate::coder::Result;
2use crate::error::err;
3
4pub const ZST_LIMIT: usize = 1 << 16;
5
6fn check_zst_len(len: usize) -> Result<()> {
7    if len > ZST_LIMIT {
8        err("too many zero sized types")
9    } else {
10        Ok(())
11    }
12}
13
14// Used by deserialize. Guards against Vec<()> with huge len taking forever.
15#[inline]
16pub fn guard_zst<T>(len: usize) -> Result<()> {
17    if core::mem::size_of::<T>() == 0 {
18        check_zst_len(len)
19    } else {
20        Ok(())
21    }
22}