< 返回版块

rust 日报 babpstep 发表于 2022-06-14 19:36

ceresdb: Rust 实现的高性能时序数据库

CeresDB 是一款高性能、分布式、Schema-less 的云原生时序数据库,能够同时处理时序型(time-series)以及分析型(analytics)负载。

该项目近日正式开源了,目前在快速迭代中,欢迎大家积极参与到该项目中。

github地址

Clap 发布 v3.2 版本

clap 是 Rust 中常用的命令行参数解析器,近日发布了 v3.2 版本,该版本也将是 v4.0 之前的最后一个版本。

v3.2 在 v3.1 的基础上,废弃了 Arg::validator Arg::allow_invalid_utf8 等 API,引入了更加开放和灵活的 API,例如:

  1. Arg::value_parser
  2. ArgAction

以 ArgAction 为例,因为 clap 会在解析时推断出如何处理参数,在某些情况下,它并不能完全满足用户的需求,需要提供更明确的控制。现在通过指定一个 ArgAction,即可确定它与解析器的交互方式(目前,这是一个封闭的 API,但我们希望将来允许用户提供自己的操作)。

示例:

/* 
#[non_exhaustive]
pub enum ArgAction {
    Set,
    Append,
    StoreValue,
    IncOccurrence,
    SetTrue,
    SetFalse,
    Count,
    Help,
    Version,
}
*/
let cmd = Command::new("mycmd")
    .arg(
        Arg::new("quiet")
            .long("quiet")
            .action(clap::builder::ArgAction::SetTrue)
    )
    .arg(
        Arg::new("verbose")
            .long("verbose")
            .action(clap::builder::ArgAction::Count)
    );

let matches = cmd.try_get_matches_from(
    ["mycmd", "--quiet", "--quiet", "--verbose", "--verbose", "--verbose"]
).unwrap();
assert_eq!(
    *matches.get_one::<bool>("quiet").expect("defaulted by clap"),
    Some(true)
);
assert_eq!(
    *matches.get_one::<u8>("verbose").expect("defaulted by clap"),
    Some(3)
);

clap v3.2 版本将会稳定一个月左右,之后会开始 v4.0 版本的迭代,本次更新的详细信息可查看其更新日志

GBemulator:Rust 实现的 GameBoy 模拟器

GBemulator 是使用 Rust 从头开始​​编写的 Gameboy 模拟器,兼容 macOS、Linux 和 Windows 系统。该项目使用 wgpu 进行渲染,使用 cpal 进行音频输出,使用 egui 设计图形界面,目前完成度已经相当高,感兴趣的小伙伴不妨尝试一下该项目。

MarioLand2 MarioLand

github地址

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页