1#![no_std]
2#![cfg_attr(feature = "f16", feature(f16))]
3extern crate alloc;
4
5mod header;
6mod mode;
7#[cfg(feature = "std")]
8mod mrcfile;
9#[cfg(test)]
10#[cfg(feature = "std")]
11#[path = "../test/mrcfile_test.rs"]
12mod mrcfile_test;
13#[cfg(test)]
14#[path = "../test/tests.rs"]
15mod tests;
16mod view;
17
18pub use header::Header;
19pub use mode::Mode;
20pub use view::{MrcView, MrcViewMut};
21
22#[cfg(feature = "std")]
23pub use mrcfile::{MrcFile, MrcMmap, open_file, open_mmap};
24
25#[derive(Debug)]
26pub enum Error {
27 Io,
28 InvalidHeader,
29 InvalidMode,
30 InvalidDimensions,
31 TypeMismatch,
32 #[cfg(feature = "mmap")]
33 Mmap,
34}
35
36impl core::fmt::Display for Error {
37 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
38 match self {
39 Error::Io => write!(f, "IO error"),
40 Error::InvalidHeader => write!(f, "Invalid MRC header"),
41 Error::InvalidMode => write!(f, "Invalid MRC mode"),
42 Error::InvalidDimensions => write!(f, "Invalid dimensions"),
43 Error::TypeMismatch => write!(f, "Type mismatch"),
44 #[cfg(feature = "mmap")]
45 Error::Mmap => write!(f, "Memory mapping error"),
46 }
47 }
48}
49
50#[cfg(feature = "std")]
51impl core::error::Error for Error {}