struct HeapBuf<T>(Vec<T>);Expand description
Brotli 圧縮されたデータを取り、展開されたバイト列を返す。 Brotli 展開用のヒープ確保アロケータ。
【2026-08-03 発見・修正】従来は alloc_no_stdlib::StackAllocator に
型ごとにスロットを 1 個しか渡していなかった([&mut [u8]; 1])。
Brotli は同じ型の領域を複数同時に要求するため、2 個目以降が取れず
BrotliDecompressStream から戻ってこなくなる。
実測(fa-v4compatibility.woff2, 4132 バイト):
[FONT][BR] u8 プール確保 完了
[FONT][BR] u32 プール確保 完了
[FONT][BR] HuffmanCode プール確保 完了
[FONT][BR] BrotliState 構築 完了
[FONT][BR] 展開開始 in=4060 out_cap=8750
(以降なし。待機 300/420/540 秒すべて同じ地点で停止)カーネルには 512MB のヒープがあるので、固定プールをやめて 必要なだけヒープから確保する。プールサイズの見積りが不要になり、 「大きいフォントで枯渇して落ちる/止まる」という失敗モードごと消える。
Tuple Fields§
§0: Vec<T>Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for HeapBuf<T>
impl<T> RefUnwindSafe for HeapBuf<T>where
T: RefUnwindSafe,
impl<T> Send for HeapBuf<T>where
T: Send,
impl<T> Sync for HeapBuf<T>where
T: Sync,
impl<T> Unpin for HeapBuf<T>where
T: Unpin,
impl<T> UnsafeUnpin for HeapBuf<T>
impl<T> UnwindSafe for HeapBuf<T>where
T: UnwindSafe,
Blanket Implementations§
impl<T, U> AllocatedSlice<T> for Uwhere
U: SliceWrapperMut<T> + SliceWrapper<T> + Default,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more