mirror of
https://github.com/dnlbauer/xdrfile.git
synced 2026-09-10 22:25:30 +00:00
Added from type info to cast errors
This commit is contained in:
@@ -30,7 +30,7 @@ pub enum Error {
|
|||||||
/// Step was out of range for usize on this platform
|
/// Step was out of range for usize on this platform
|
||||||
StepSizeOutOfRange(i32),
|
StepSizeOutOfRange(i32),
|
||||||
/// A numeric cast from `value` failed during `task`
|
/// A numeric cast from `value` failed during `task`
|
||||||
NumericCastFailed {
|
CastFromI32Failed {
|
||||||
source: std::num::TryFromIntError,
|
source: std::num::TryFromIntError,
|
||||||
task: ErrorTask,
|
task: ErrorTask,
|
||||||
value: usize,
|
value: usize,
|
||||||
@@ -72,7 +72,7 @@ impl std::error::Error for Error {
|
|||||||
match &self {
|
match &self {
|
||||||
NullInStr(err) => Some(err),
|
NullInStr(err) => Some(err),
|
||||||
CouldNotCheckNAtoms(err) => Some(err.as_ref()),
|
CouldNotCheckNAtoms(err) => Some(err.as_ref()),
|
||||||
NumericCastFailed { source, .. } => Some(source),
|
CastFromI32Failed { source, .. } => Some(source),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,9 +135,9 @@ impl std::fmt::Display for Error {
|
|||||||
write!(f, "Failed to read number of atoms in trajectory file")
|
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) => write!(f, "Step {} does not fit in usize on this platform", n),
|
||||||
NumericCastFailed { value, task, .. } => write!(
|
CastFromI32Failed { value, task, .. } => write!(
|
||||||
f,
|
f,
|
||||||
"Numeric cast from {value} failed while {task}",
|
"Numeric cast from {value}:usize to i32 failed while {task}",
|
||||||
value = value,
|
value = value,
|
||||||
task = task
|
task = task
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ fn path_to_cstring(path: impl AsRef<Path>) -> Result<CString> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn to_i32(value: usize, task: ErrorTask) -> Result<i32> {
|
fn to_i32(value: usize, task: ErrorTask) -> Result<i32> {
|
||||||
value.try_into().map_err(|e| Error::NumericCastFailed {
|
value.try_into().map_err(|e| Error::CastFromI32Failed {
|
||||||
source: e,
|
source: e,
|
||||||
value,
|
value,
|
||||||
task,
|
task,
|
||||||
@@ -809,7 +809,7 @@ mod tests {
|
|||||||
Err(e) => e,
|
Err(e) => e,
|
||||||
_ => panic!("Conversion from -1 to u8 succeeded"),
|
_ => panic!("Conversion from -1 to u8 succeeded"),
|
||||||
};
|
};
|
||||||
let expected = Error::NumericCastFailed {
|
let expected = Error::CastFromI32Failed {
|
||||||
source: try_from_int_err,
|
source: try_from_int_err,
|
||||||
task: ErrorTask::Write,
|
task: ErrorTask::Write,
|
||||||
value: 3_294_967_295_usize,
|
value: 3_294_967_295_usize,
|
||||||
|
|||||||
Reference in New Issue
Block a user