Crate io_enum

source ·
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

  • 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.

Derive Macros§