1#![cfg_attr(docsrs, feature(doc_cfg))]
4
5use std::fs::File;
6use std::io::Result;
7
8pub(crate) mod bin;
10#[cfg(feature = "nbt")]
12#[cfg_attr(docsrs, doc(cfg(feature = "nbt")))]
13pub mod nbt;
14
15#[cfg(feature = "je")]
17#[cfg_attr(docsrs, doc(cfg(feature = "je")))]
18pub mod je;
19
20#[cfg(feature = "be")]
22#[cfg_attr(docsrs, doc(cfg(feature = "be")))]
23pub mod be;
24
25pub trait BinaryFile {
27 fn from_reader<R: std::io::Read>(reader: R) -> Result<Self> where Self: Sized;
29 fn to_writer<W: std::io::Write>(&self, writer: W) -> Result<()>;
31}
32
33pub trait RandomAccess {
36 fn new(file: File) -> Result<Self> where Self: Sized;
37}
38
39pub trait Endianness {
41 const IS_NATIVE: bool;
43}
44
45pub struct LE {}
47
48impl Endianness for LE {
49 const IS_NATIVE: bool = cfg!(target_endian = "little");
50}
51
52pub struct BE {}
54
55impl Endianness for BE {
56 const IS_NATIVE: bool = cfg!(target_endian = "big");
57}