Expand description
#[derive(Read, Write, Seek, BufRead)] for enums.
§Usage
Add this to your Cargo.toml
:
[dependencies]
io-enum = "1"
Compiler support: requires rustc 1.56+
§Examples
use std::{
fs::File,
io::{self, Write},
path::Path,
};
use io_enum::*;
#[derive(Read, Write, Seek, BufRead)]
enum Either<A, B> {
A(A),
B(B),
}
fn func(path: Option<&Path>) -> impl Write {
if let Some(path) = path {
Either::A(File::open(path).unwrap())
} else {
Either::B(io::stdout())
}
}
See auto_enums crate for how to automate patterns like this.
§Supported traits
Read
- example | generated codeBufRead
- example | generated codeWrite
- example | generated codeSeek
- example | generated code
§Related Projects
- auto_enums: A library for to allow multiple return types by automatically generated enum.
- derive_utils: A procedural macro helper for easily writing derives macros for enums.
- iter-enum: #[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] for enums.