New NumAtomsOutOfRange error variant

This commit is contained in:
Josh Mitchell
2020-11-15 17:39:22 +11:00
parent 9a4f27aeb7
commit 4a71ed001c
2 changed files with 9 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ use crate::c_abi;
use crate::FileMode;
use crate::Frame;
use std::error::Error as StdError;
use std::os::raw::c_int;
use std::path::{Path, PathBuf};
/// Error type for the xdrfile library
@@ -35,6 +36,8 @@ pub enum Error {
task: ErrorTask,
value: usize,
},
/// A numeric cast from `value` failed during `task`
NumAtomsOutOfRange(c_int),
}
impl Error {
@@ -134,10 +137,12 @@ impl std::fmt::Display for Error {
CouldNotCheckNAtoms(_err) => {
write!(f, "Failed to read number of atoms in trajectory file")
}
StepSizeOutOfRange(n) => write!(f, "Step {} does not fit in usize on this platform", n),
StepSizeOutOfRange(n) | NumAtomsOutOfRange(n) => {
write!(f, "Step {} does not fit in usize on this platform", n)
}
CastToCintFailed { value, task, .. } => write!(
f,
"Numeric cast from {value}:usize to i32 failed while {task}",
"Numeric cast from {value}:usize to C int failed while {task}",
value = value,
task = task
),

View File

@@ -327,8 +327,7 @@ impl Trajectory for XTCTrajectory {
if let Some(err) = check_code(code, ErrorTask::ReadNumAtoms) {
Err(err)
} else {
Ok(usize::try_from(num_atoms)
.expect("Number of atoms in file does not fit in usize"))
usize::try_from(num_atoms).map_err(|_| Error::NumAtomsOutOfRange(num_atoms))
}
}
})
@@ -458,8 +457,7 @@ impl Trajectory for TRRTrajectory {
if let Some(err) = check_code(code, ErrorTask::ReadNumAtoms) {
Err(err)
} else {
Ok(usize::try_from(num_atoms)
.expect("Number of atoms in file does not fit in usize"))
usize::try_from(num_atoms).map_err(|_| Error::NumAtomsOutOfRange(num_atoms))
}
}
})