pub mod utils {
use super::{global_memory_manager, MemoryVec, PoolType, Result};
pub fn create_identifier_vec() -> Result<MemoryVec<String>> {
MemoryVec::new(PoolType::StringIntern)
}
pub fn create_content_vec() -> Result<MemoryVec<u8>> {
MemoryVec::new(PoolType::FileContent)
}
pub fn create_ast_vec<T>() -> Result<MemoryVec<T>> {
MemoryVec::new(PoolType::AstParsing)
}
pub fn estimate_collection_memory<T>(collection: &[T]) -> usize {
std::mem::size_of_val(collection)
}
pub fn should_cleanup_memory() -> Result<bool> {
let manager = global_memory_manager()?;
let stats = manager.stats();
Ok(stats.allocation_pressure > 0.8)
}
pub fn cleanup_if_needed() -> Result<usize> {
if should_cleanup_memory()? {
let manager = global_memory_manager()?;
manager.cleanup()
} else {
Ok(0)
}
}
}