我正在建立一个用于读取和写入文件格式的板条箱。读取是通过nom
解析器组合器完成的。结果,我有很多小的解析器方法,例如:
named!(read_prop_fs<&[u8], PropChunk>, do_parse!(
tag!("FS ") >>
size: be_u64 >>
fs: be_u32 >>
(PropChunk { id: PropId::FS(fs), size: size })
));
解析器函数位于io::input::internal
中,并且都是私有的。他们使用的大多数数据类型也是该模块专用的。
我要测试的文件编写器代码在io::output::internal
中。理想情况下,我想在编写器的单元测试中使用解析器功能。
使用所有这些方法和类型pub
甚至是crate
看起来很丑。倒置模块似乎也很奇怪,等效于io::internal::{input, output}
,其中input
和output
最终是pub
并代表包装箱API。
有没有办法做这样的事情?
当
#[cfg(test)]
为true时,当前模块中的默认可见性应为crate
,否则默认值应为private。
如果没有,是否存在一种典型的,符合人体工程学的解决方法?