< 返回版块

Cupnfish 发表于 2021-09-16 23:29

Pipette: 一个模仿 Elixir 的管道操作的包,没有使用宏

Elixir 是一门函数式编程语言,其中有个管道操作符十分好用,可以将上一步操作的结果传入给下一个方法,做链式调用,在某些情况下比嵌套括号好看很多。

Pipette 是一个Rust的管道操作包,拥有这个包你也可以在Rust里实现类似的操作:

use pipette::{Pipeline, pipe};

let input = 1;

let output = pipe((
    input
    |a| a * 2,
    |a| a * 3,
    |a| a * 4,
    |a| a * 5,
    |a| a * 6,
    |a| a * 7,
    |a| a * 8,
));

assert_eq!(output, 40_320);

或者这样:

fn add_one(a: i32) -> i32 {
    a + 1
}

let r0 = pipe((0, add_one, add_one));
let r1 = pipe((0, add_one, add_one, add_one));
let r2 = pipe((0, add_one, add_one, add_one, add_one));
let r3 = pipe((0, add_one, add_one, add_one, add_one, add_one));

// lazy pipeline
let add_three = (0, add_one, add_one, add_one);

add_three.compute();

其实社区内也有其他实现,但是基本都是用了宏,这个包相较于其他实现而言,就是没有使用宏。

Github: https://github.com/jkelleyrtp/pipette

《 Rust for Rustaceans 》 已经在印刷厂了!

Rust for Rustaceans 是一本 Rust 新书,目标读者从书的简介里可以知道是针对对于Rust有一定了解,还想要再更近一步深入的读者。

作者大家之前应该有接触过: Jon Gjengset,油管上发了很多Rust相关的实战录播,是Crust of Rust系列视频的作者,基本没过段时间都会在其推特上让大家投票选择下一期视频的主讲内容。

作者推特: https://twitter.com/jonhoo

Difftastic 句法比较工具

这是用Rust写的一个能理解语法的比较工具!

Difftastic解析源代码(使用树状图),执行结构性差异(基本上是Dijktra的算法),然后试图以一种可理解的方式显示它:)

它并不完美:它有时会被混淆,而且它真的不喜欢大文件。这是我在crates.io上的第一个相关工具,而且它真的很有趣,可以修补。

https://github.com/Wilfred/difftastic/

希望你有任何反馈!

Rust 播客,这次邀请到的是Rust从零到生产的作者

对外语播客感兴趣的可以关注一下,基本每过段时间都会邀请社区大佬进行采访。

Read More: https://rustacean-station.org/episode/036-luca-palmieri/

还有另一个播客节目: Are we podcast yet...令人熟悉的Rust社区Are we体名字 :)

恰好这次邀请的作者就是Rust for Rustaceans的作者:

https://soundcloud.com/arewepodcastyet/awpy-08-jon-ferdinand-ronge-gjengset

本周周报

第 408 期。

Read More: https://this-week-in-rust.org/blog/2021/09/15/this-week-in-rust-408/

From 日报小组 Cupnfish

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页