< 返回版块

苦瓜小仔 发表于 2025-05-21 08:06

Rust PR:Stabilize if let guard

该Pull Request提议稳定Rust中的if let guard功能(跟踪问题:#51114,RFC:rfcs#2294)。此功能允许在match语句的守卫中直接使用if let表达式,结合模式匹配和布尔条件,使代码更简洁、易读。例如,可以在匹配分支的守卫中直接检查某个模式是否匹配,并基于此执行相应逻辑。该功能经过广泛测试,解决了之前的临时变量生命周期和作用域问题,可在所有Rust版本中稳定使用,无需升级版本。

match value {
    Some(x) if let Ok(y) = compute(x) => {
        // Both `x` and `y` are available here
        println!("{}, {}", x, y);
    }
    _ => {}
}

Github PR:https://github.com/rust-lang/rust/pull/141295

文章《Disable debuginfo to improve Rust compile times》

作者:kobzol

文章探讨了禁用Rust编译中的debuginfo以提升增量构建速度的方法。实验表明,禁用debuginfo可使编译速度提升30%至40%,尤其在使用默认Linux链接器时效果更明显。

作者建议在Cargo.toml中设置[profile.dev] debug=falsedebug="line-tables-only",以折中保留部分调试信息。他认为默认生成debuginfo较为浪费,计划推动相关改进,同时鼓励社区反馈。

阅读:https://kobzol.github.io/rust/rustc/2025/05/20/disable-debuginfo-to-improve-rust-compile-times.html

Reddit:https://www.reddit.com/r/rust/comments/1kr7ri4/psa_you_can_disable_debuginfo_to_improve_rust/

文章《Optional Rust-In-FreeBSD Support May 2025 Status Report》

这篇文章是关于HardenedBSD项目中对FreeBSD支持Rust语言的进展报告。目前,项目团队创建了一个特性分支hardened/current/rust-in-base,用于支持Rust编写的用户空间组件。

团队引入了vendor/rust子目录来管理依赖,并创建了share/mk/bsd.rust.mk文件以支持在构建FreeBSD世界时构建Rust应用程序。目前,团队正在开发支持库crate和多程序构建的功能,并计划制定更明确的crate导入指南。

HardenedBSD 是一个基于 FreeBSD 的安全增强型操作系统,由 Oliver Pinter 和 Shawn Webb 于2014年发起。其主要目标是通过系统级加固和密码工程提升 FreeBSD 的安全性,增强内核防御未知漏洞利用的能力。

阅读:https://hardenedbsd.org/article/shawn-webb/2025-05-20/optional-rust-freebsd-support-may-2025-status-report

Reddit:https://www.reddit.com/r/rust/comments/1krdytc/optional_rustinfreebsd_support_may_2025_status/

文章《Hypervisor as a Library》

作者:Seiya Nuta

这篇文章探讨了将虚拟机监控程序(Hypervisor)作为库集成到应用程序中的设计模式。作者介绍了在Starina操作系统中运行Linux应用的一种方法:通过轻量级虚拟机运行真实的Linux内核。

文章展示了如何通过starina_linux::Command API在Starina中运行Linux程序,类似于Rust中的std::process::Command。这种设计允许直接将Rust对象传递给虚拟机中的程序,并通过Virtio等接口与虚拟机交互。作者认为,尽管虚拟机通常被认为较重,但通过优化,可以实现快速启动和低延迟运行。

阅读:https://seiya.me/blog/hypervisor-as-a-library

Starina OS 仓库:https://github.com/starina-os/starina

Reddit:https://www.reddit.com/r/rust/comments/1kqykz4/hypervisor_as_a_library/

文章《When rethinking a codebase is better than a workaround》

作者:Giuliano Bellini

这篇文章讲述了作者在开发Sniffnet时,面对代码架构问题选择重构而非简单修补的经历。为了支持从PCAP文件导入离线数据的功能,作者决定重构前端架构,使其更灵活且与后端解耦。

文章介绍了Sniffnet基于Elm架构的iced框架,强调了Rust语言的所有权和不可变性特性如何帮助维护单一数据源和控制状态修改。尽管重构过程复杂,但Rust强大的类型系统和编译器支持使得重构顺利进行,最终提升了代码的可维护性和稳定性。

阅读:https://sniffnet.net/news/rethink-over-workaround/

Reddit:https://www.reddit.com/r/rust/comments/1krel0c/when_rethinking_a_codebase_is_better_than_a/

Algebraeon - Rust 编写的计算代数系统(CAS)

Algebraeon 是一个用 Rust 编写的计算代数系统(CAS),专注于精确代数计算,支持矩阵、多项式、代数数和因式分解等操作。

它使用 Malachite 处理任意大小的整数和有理数。目前处于早期开发阶段,API 可能会变化。项目提供用户指南和示例代码,支持整数分解、多项式分解、线性方程组求解和复根隔离等功能。欢迎通过问题跟踪器或提交代码贡献。

仓库:https://github.com/pishleback/Algebraeon

Reddit:https://www.reddit.com/r/rust/comments/1kqo5ru/computational_algebra_in_rust_looking_for_feedback/

Nanomachine - 通用的有限状态机库

nanomachine 是一个用 Rust 编写的极简、灵活且通用的有限状态机(FSM)库,灵感来源于 MicroMachine。它无依赖、支持 no_std,允许使用任意类型的态、事件和回调。

API 简洁且计划保持这种简洁性。该库适用于快速实现应用逻辑中的状态机,但不支持带保护的转换或层次化状态。支持状态和事件的任意类型,只要它们实现了 Eq + Hash + Clone

仓库:https://github.com/alexfertel/nanomachine

讨论《哪些开源项目最需要贡献者》

根据评论区,点赞最高的评论是“你使用最多的项目”。

Reddit:https://www.reddit.com/r/rust/comments/1kqcthz/what_open_source_rust_projects_are_the_most_in/

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页