From 4929f19bf0844897c0ba42a8e113e01492bd45e4 Mon Sep 17 00:00:00 2001 From: Quaternions <krakow20@gmail.com> Date: Tue, 13 Feb 2024 21:23:45 -0800 Subject: [PATCH] error --- src/lib.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 5eeb130..cfcac60 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,14 +1,26 @@ mod bsp; -pub fn read<R:std::io::Read>(mut input:R)->vbsp::BspResult<vbsp::Bsp>{ +pub struct Bsp(vbsp::Bsp); + +#[derive(Debug)] +pub enum ReadError{ + Bsp(vbsp::BspError), + Io(std::io::Error), +} +impl std::fmt::Display for ReadError{ + fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ + write!(f,"{self:?}") + } +} +impl std::error::Error for ReadError{} + +pub fn read<R:std::io::Read>(mut input:R)->Result<Bsp,ReadError>{ let mut s=Vec::new(); - match input.read_to_end(&mut s){ - Ok(_)=>(), - Err(e)=>println!("load_bsp::convert read_to_end failed: {:?}",e), - } + //TODO: mmap + input.read_to_end(&mut s).map_err(ReadError::Io)?; - vbsp::Bsp::read(s.as_slice()) + vbsp::Bsp::read(s.as_slice()).map(Bsp).map_err(ReadError::Bsp) } pub fn convert<AcquireTextureId,AcquireMeshId>(