# kxio `kxio` is a Rust library that provides injectable `FileSystem`, `Network` and `Print` resources to enhance the testability of your code. By abstracting system-level interactions, `kxio` enables easier mocking and testing of code that relies on file system and network operations. ## Features - **Filesystem Abstraction** - **Network Abstraction** - **Print Abstraction** - **Enhanced Testability** ## Filesystem The Filesystem module offers a clean abstraction over `std::fs`, the standard file system operations. For comprehensive documentation and usage examples, please refer to . ### Key Filesystem Features: - File reading and writing - Directory operations - File metadata access - Fluent API for operations like `.reader().bytes()` ## Network The Network module offers a testable interface over the `reqwest` crate. For comprehensive documentation and usage examples, please refer to ## Print The Print module provides three implementations of the `Printer` trait: - `StandardPrint` - behaves as normal, printing to `STDOUT` and `STDERR` - `NullPrint` - swallows all prints, outputting nothing - `TestPrint` - captures all print output and makes it available for assertions in tests It also provides macros to use with each: - `kxprintln` - `kxprint` - `kxeprintln` - `kxeprint` They are analogous to the `std` macros: `println`, `print`, `eprintln` and `eprint` respectively. Each of the `kx{e}print{ln}` macros takes a reference to an instance of the `Printer` trait as the first parameter. For comprehensive documentation and usage examples, please refer to ## Getting Started Add `kxio` to your `Cargo.toml`: ```toml [dependencies] kxio = "x.y.z" ``` ## Usage See the example [get.rs](./examples/get.rs) for an annotated example on how to use the `kxio` library. It covers both the `net` and `fs` modules. ## Development - The project uses [Cargo Mutants](https://crates.io/crates/cargo-mutants) for mutation testing. - [ForgeJo Actions](https://forgejo.org/docs/next/user/actions/) are used for continuous testing and linting. ## Contributing Contributions are welcome! Please check our [issue tracker](https://git.kemitix.net/kemitix/kxio/issues) for open tasks or submit your own ideas. ## License This project is licensed under the terms specified in the `LICENSE` file in the repository root. ## Acknowledgements - Built with Rust --- For more information, bug reports, or feature requests, please visit our [repository](https://git.kemitix.net/kemitix/kxio).