From 47c9d242f56d9df2d6cabdd077c338322b42e0cd Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 23 Jun 2026 14:09:19 +0700 Subject: [PATCH] Remove Box from Vec conversion --- src/filesystem.rs | 7 +++---- src/record.rs | 7 +++---- src/transaction.rs | 10 +++------- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/filesystem.rs b/src/filesystem.rs index 5baf6ea5be..20dcd2a12d 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -1,6 +1,5 @@ use aes::Aes128; use alloc::{ - boxed::Box, collections::{BTreeMap, VecDeque}, vec, }; @@ -14,8 +13,8 @@ use crate::{ HEADER_RING, RECORD_SIZE, }; -fn compress_cache() -> Box<[u8]> { - vec![0; lz4_flex::block::get_maximum_output_size(RECORD_SIZE as usize)].into_boxed_slice() +fn compress_cache() -> Vec { + vec![0; lz4_flex::block::get_maximum_output_size(RECORD_SIZE as usize)] } /// A file system @@ -28,7 +27,7 @@ pub struct FileSystem { pub header: Header, pub(crate) allocator: Allocator, pub(crate) cipher_opt: Option>, - pub(crate) compress_cache: Box<[u8]>, + pub(crate) compress_cache: Vec, pub node_usages: BTreeMap, } diff --git a/src/record.rs b/src/record.rs index 7586cd9aed..a0fbef67fc 100644 --- a/src/record.rs +++ b/src/record.rs @@ -1,16 +1,15 @@ -use alloc::{boxed::Box, vec}; +use alloc::vec; use core::ops; use crate::{BlockLevel, BlockTrait, RECORD_LEVEL}; -//TODO: this is a box to prevent stack overflows #[derive(Clone)] -pub struct RecordRaw(pub(crate) Box<[u8]>); +pub struct RecordRaw(pub(crate) Vec); unsafe impl BlockTrait for RecordRaw { fn empty(level: BlockLevel) -> Option { if level.0 <= RECORD_LEVEL { - Some(Self(vec![0; level.bytes() as usize].into_boxed_slice())) + Some(Self(vec![0; level.bytes() as usize])) } else { None } diff --git a/src/transaction.rs b/src/transaction.rs index 0abfd9961f..044a7e6217 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -1,5 +1,4 @@ use alloc::{ - boxed::Box, collections::{BTreeMap, VecDeque}, vec::Vec, }; @@ -73,7 +72,7 @@ pub struct Transaction<'a, D: Disk> { pub(crate) allocator: Allocator, allocator_log: VecDeque, deallocate: Vec, - pub(crate) write_cache: BTreeMap>, + pub(crate) write_cache: BTreeMap>, } impl<'a, D: Disk> Transaction<'a, D> { @@ -484,11 +483,8 @@ impl<'a, D: Disk> Transaction<'a, D> { return Err(Error::new(ENOENT)); } - //TODO: do not convert to boxed slice if it already is one - self.write_cache.insert( - block.addr(), - block.data().deref().to_vec().into_boxed_slice(), - ); + self.write_cache + .insert(block.addr(), block.data().deref().to_vec()); Ok(block.create_ptr()) }