1pub(super) fn with_temporary_memory<R>(size: usize, mut f: impl FnMut(&mut [u8]) -> R) -> R {
6 #[inline(never)]
9 fn stack_mem<const STACK_SIZE: usize, R>(size: usize, mut f: impl FnMut(&mut [u8]) -> R) -> R {
10 f(&mut [0u8; STACK_SIZE][..size])
11 }
12 if size <= 512 {
15 stack_mem::<512, _>(size, f)
16 } else if size <= 1024 {
17 stack_mem::<1024, _>(size, f)
18 } else if size <= 2048 {
19 stack_mem::<2048, _>(size, f)
20 } else if size <= 4096 {
21 stack_mem::<4096, _>(size, f)
22 } else if size <= 8192 {
23 stack_mem::<8192, _>(size, f)
24 } else if size <= 16384 {
25 stack_mem::<16384, _>(size, f)
26 } else {
27 f(&mut vec![0u8; size])
28 }
29}