eval_macro - 编写 Rust 宏的新方式
Eval Macro (求值宏)是一种全新的编写 Rust 宏的方式,它将强大的功能和易读性相结合,以下是它和 macro_rules!
的对比:
Proc Macro | Eval Macro | Macro Rules | |
---|---|---|---|
Input | Token Stream | Rust Code | Macro Fragments |
Output | Token Stream | Rust Code | Macro Fragments |
Hygienic | ❌ | ❌ | ✅ |
Advanced transformations | ✅ | ✅ | ❌ |
Easy to define | ❌ | ✅ | ✅ |
Easy to read | ❌ | ✅ | ✅ |
Reusable | ✅ | ❌ | ✅ |
简而言之,求值宏兼具过程宏的强大功能以及 macro_rules!
宏的简洁性,可以简单理解为使用 Rust 代码生成 Rust 代码。然而,它们不可复用 —— 你无法将一个求值宏导出以供其他 crate 使用。以下是关于 Eval Macro 的简单示例:
Github 仓库:https://github.com/wdanilo/eval-macro
rustup 1.28.0/1.28.1 发布
Rust 官方于 2025 年 3 月 2 日发布了 Rust 安装管理工具 Rustup 1.28.0 版本,带来诸多重要变化,具体内容如下:
- 新成员加入:Chris Denton 加入 Rustup 团队,其在 Rust 项目 Windows 相关部分的丰富经验,有助于解决 Windows 特定问题。
- 使用方式变更
- 对于尚未在本机安装的工具链,rustup 不再自动安装,即使它是活跃的。如需安装,需采用无参数运行
rustup toolchain install
。 - 通过
rustup toolchain install
或rustup default
安装与主机不兼容的工具链时,需添加--force-non-host
标志,否则会被拒绝。
- 对于尚未在本机安装的工具链,rustup 不再自动安装,即使它是活跃的。如需安装,需采用无参数运行
- 新支持平台:正式支持
aarch64-pc-windows-msvc
和loongarch64-unknown-linux-musl
主机平台。 - 功能改进
rustup show
输出格式优化,更易查看工具链状态。rustup doc
可同时接受标志和主题,便于快速导航到特定文档部分。rustup remove
子命令支持更多别名,如rm
和del
。- 增加对 nushell 的基本支持。
- 内部变更
- 默认下载后端从
reqwest
搭配native-tls
改为搭配rustls
,若新后端有问题,仍可通过RUSTUP_USE_CURL
和RUSTUP_USE_RUSTLS
更改。 - 默认后端使用
rustls - platform - verifier
验证服务器证书,在支持的平台上利用系统证书存储。 - 创建代理链接时,优先尝试符号链接,失败则回退到硬链接。
- 新增
RUSTUP_LOG
环境变量控制 Rustup 二进制文件的基于跟踪的日志记录。
- 默认下载后端从
- 官网变化:整体设计更新以契合 Rust 项目品牌
- 更新方式:已安装旧版本 Rustup,停止相关程序(如关闭 IDE)后运行
rustup self update
,或运行rustup update
;未安装则从官网获取。 - 注意事项:反恶意软件扫描程序可能阻止 Rustup 或其文件操作(如安装
rust-docs
时);在 CI 环境中,Rustup 自更新可能失败,可在工作流开始时运行rustup set auto-self-update disable
解决,从 1.28.0 版本起,Rustup 在 CI 环境中不再尝试自更新。这些问题在反恶意软件扫描程序和 CI 运行器更新后会自动解决。
随即,又发布了 Rustup 1.28.1 版本,包含的变更如下:
- 默认启用自动安装,但是可以通过设置环境变量
RUSTUP_AUTO_INSTALL
为0
来关闭。 rustup show active-toolchain
将输出信息显示在一行上- 修复一些 Bug。
1.28.0 原文地址:https://blog.rust-lang.org/2025/03/02/Rustup-1.28.0.html
1.28.1 原文地址:https://blog.rust-lang.org/2025/03/04/Rustup-1.28.1.html
使用 Rust 重写的一个 CAD 工具
Jess Frazelle 和 Jordan Noone 因在工作中受现有 CAD 软件性能问题困扰,在寻求解决方案无果后,决定创立 Zoo 公司,旨在解决 CAD 领域存在的问题。Zoo 公司开创了新的 CAD 范式,将设计用代码定义。这种方式的优势包括:可利用 git 进行版本控制,解决 CAD 文件版本管理难题;代码能避免重复数据的序列化,提高效率;结合 AI,借助 Copilot 等工具辅助设计。为解决代码操作的可用性问题,Zoo 采用双面板布局,类似 Markdown 编辑器,用户可在左侧编辑代码,右侧实时查看 3D 模型,支持双向编辑。其中 Zoo 语言的解析器采用 Rust 开发,同时,网页上运行的代码也有采用 Rust 编写的 WASM。
官网:https://zoo.dev/
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
评论区
写评论大Ferris夹小Ferris笑死我了🤣