#读写 #枚举 #IO #派生

io-enum

#[derive(Read, Write, Seek, BufRead)] for 枚举

18 个版本 (7 个稳定版)

1.1.3 2024 年 1 月 27 日
1.1.1 2023 年 6 月 29 日
1.1.0 2023 年 3 月 26 日
1.0.2 2022 年 12 月 10 日
0.1.3 2019 年 3 月 4 日

#698Rust 模式

Download history 6645/week @ 2024-03-14 7529/week @ 2024-03-21 6823/week @ 2024-03-28 9850/week @ 2024-04-04 11126/week @ 2024-04-11 9611/week @ 2024-04-18 11476/week @ 2024-04-25 10046/week @ 2024-05-02 11959/week @ 2024-05-09 10550/week @ 2024-05-16 10549/week @ 2024-05-23 14089/week @ 2024-05-30 11701/week @ 2024-06-06 12811/week @ 2024-06-13 12119/week @ 2024-06-20 10353/week @ 2024-06-27

每月 48,858 次下载
121 个包中使用 (3 个直接使用)

Apache-2.0 OR MIT

14KB
86

io-enum

crates.io docs.rs license rust version github actions

#[derive(Read, Write, Seek, BufRead)] for 枚举。

使用方法

将此添加到您的 Cargo.toml

[dependencies]
io-enum = "1"

编译器支持:需要 rustc 1.56+

示例

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())
    }
}

查看 auto_enums 包以了解如何自动化此类模式。

支持的特质

  • auto_enums: 允许通过自动生成枚举来允许多个返回类型的库。
  • derive_utils: 枚举派生宏的进程宏助手,便于编写。
  • iter-enum: #[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] for 枚举。

许可证

根据您的选择,受 Apache License, Version 2.0 或 MIT 许可证的约束。

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在工作中的任何贡献,将按上述方式双重许可,而无需任何附加条款或条件。

依赖项

~315–770KB
~18K SLoC