From 2221531f758389b47420ddad7db2617315dc89ce Mon Sep 17 00:00:00 2001 From: Josh Mitchell Date: Sun, 15 Nov 2020 17:44:49 +1100 Subject: [PATCH] Improved out-of-range error messages --- src/errors.rs | 19 +++++++++++++------ src/lib.rs | 4 ++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/errors.rs b/src/errors.rs index a78dd2d..74cdde8 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -29,15 +29,15 @@ pub enum Error { NullInStr(std::ffi::NulError), CouldNotCheckNAtoms(Box), /// Step was out of range for usize on this platform - StepSizeOutOfRange(i32), + StepOutOfRange(i32), + /// natoms was out of range for usize on this platform + NumAtomsOutOfRange(c_int), /// A numeric cast from `value` failed during `task` CastToCintFailed { source: std::num::TryFromIntError, task: ErrorTask, value: usize, }, - /// A numeric cast from `value` failed during `task` - NumAtomsOutOfRange(c_int), } impl Error { @@ -137,9 +137,16 @@ impl std::fmt::Display for Error { CouldNotCheckNAtoms(_err) => { write!(f, "Failed to read number of atoms in trajectory file") } - StepSizeOutOfRange(n) | NumAtomsOutOfRange(n) => { - write!(f, "Step {} does not fit in usize on this platform", n) - } + StepOutOfRange(n) => write!( + f, + "Illegal step size while reading trajectory: Failed to cast {} to usize.", + n + ), + NumAtomsOutOfRange(n) => write!( + f, + "Illegal number of atoms while reading trajectory: Failed to cast {} to usize.", + n + ), CastToCintFailed { value, task, .. } => write!( f, "Numeric cast from {value}:usize to C int failed while {task}", diff --git a/src/lib.rs b/src/lib.rs index a1f35a6..f8a5364 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -277,7 +277,7 @@ impl Trajectory for XTCTrajectory { if let Some(err) = check_code(code, ErrorTask::Read) { return Err(err); } - frame.step = usize::try_from(step).map_err(|_| Error::StepSizeOutOfRange(step))?; + frame.step = usize::try_from(step).map_err(|_| Error::StepOutOfRange(step))?; Ok(()) } } @@ -406,7 +406,7 @@ impl Trajectory for TRRTrajectory { if let Some(err) = check_code(code, ErrorTask::Read) { return Err(err); } - frame.step = usize::try_from(step).map_err(|_| Error::StepSizeOutOfRange(step))?; + frame.step = usize::try_from(step).map_err(|_| Error::StepOutOfRange(step))?; Ok(()) } }