memmap2-rs:用于内存映射IO的跨平台Rust API
是 memmap-rs 的 folk,前者已经 4 年没再更新。特性包括:
- file-backend 内存映射
- 匿名内存映射
- 同步和异步 flush
- copy-on-write 内存映射
- 只读内存映射
- 支持栈(Unix 上的 MAP_STACK)
- 可执行内存映射
GitHub:https://github.com/RazrFalcon/memmap2-rs
error-stack:上下文感知的错误处理库
对于为什么需要一个新的错误处理库,作者在文章中做了解释,主要是他们项目比较复杂,有一些额外的需求。
- 如果 scope 发生了变化,鼓励用户提供新的错误类型,通常跨越模块边界(比如解析配置文件的
ConfigParseError
和文件读取的IoError
。 - 能够在返回类型中使用这些错误类型,而无需处理困难的
From
逻辑。 - 无需大量配置即可将任何数据附加到一个错误上,而不仅仅是类似字符串的类型,然后可以在处理错误时请求这些数据。
文章:https://hash.dev/blog/announcing-error-stack
视频:https://www.youtube.com/watch?v=g6WUHcyjsfc
示例代码:https://github.com/letsgetrusty/error-stack-demo
GitHub:https://github.com/hashintel/hash/tree/main/packages/libs/error-stack
Image-service:Dragonfly镜像服务
Dragonfly 镜像服务,提供对容器镜像的快速、安全和轻松的访问。nydus 项目在 RAFS 格式之上实现了一个内容可寻址文件系统,在容器启动速度、镜像空间和网络带宽效率以及数据完整性方面改进了当前的 OCI 镜像规范。
Dragonfly 是一个基于 P2P 的智能镜像和文件分发系统。
官网:https://nydus.dev/
GitHub:https://github.com/dragonflyoss/image-service
十个主题涵盖Rust
Dragan Rakita 前几周做了一个关于 Rust 的分享,想法是在十个主题中涵盖整个语言,并尝试提出什么是 rust,为什么要使用它,以及复杂性来自哪里。并且只占用人们一个小时的时间。这十个主题包括:
- Rust 看起来很受人喜欢。自从 2016 年以来,Rust 每年都在 Stack Overflow 开发者调查中被评为「最受欢迎的编程语言」。考虑到 Rust v1.0 是 2015 年发布的,如果你是一个 Rust 新人,一定会觉得这很神奇。
- 工具和生态很赞。Cargo——一个你期望从新一代语言中获得的工具。
cargo run/build/fmt/clippy/doc
和crates.io
统一了生态中的 Rust 项目。 - 项目/代码组织做的很好。Rust 允许将一个包(项目)拆分为多个 crate(lib/binaries),并将一个 crate 拆分为模块(部分代码或文件/文件夹),以便可以在一个模块中引用另一个模块的内容。
- 对抽象和数据类型很轻。它具有预期的原始类型和控制流。有
Struct/Enum/Tuple
等复杂类型,抽象在Traits
上完成。Traits
很 nice,使用「孤儿规则」你不能用他们的代码破坏你的代码。 - 枚举和模式匹配用途广泛且令人赞叹。枚举是标记的联合。模式匹配允许部分匹配复杂数据类型的值以进行条件分支或分解数据。
- 具有内存安全。Rust 带来的新玩意儿。所有权让我们有垃圾回收的感觉,但是在编译时。
- 引用和生命周期:生命周期是规则的副产品,引用始终需要有效并且所有权在编译时完成。它有一个陡峭的学习曲线,并且可能会变得繁杂。
- 无惧并发和
async/await
:所有权和生命周期消除了数据竞争。async/await
是 Rust 的绿色线程,它的运行时只是外部库,而且速度很快。 - 具有函数式编程特性:闭包和迭代器是对语言很好的补充。
- 泛型和卫生宏。
- 一些小却能拯救你生活的特性:编译错误是上帝赐予的,也是 Rust 流行的主要原因之一。使用
?
让错误传播更简单。
如果你也正在准备一个关于 Rust 的分享,不妨作为参考。
链接:https://twitter.com/rakitadragan/status/1543290604465045506
From 日报小组 长琴
社区学习交流平台订阅:
- Rustcc 论坛:支持 rss
- 微信公众号:Rust 语言中文社区