[][src]Crate io_enum

#[derive(Read, Write, Seek, BufRead)] for enums.

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

Derive Macros

BufRead
Read
Seek
Write