mrc/
lib.rs

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 {}