ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Rust日报】eval_macro - 编写 Rust 宏的新方式

【Rust日报】eval_macro - 编写 Rust 宏的新方式

原创 数据库开发技术 作者:Rust语言中文社区 时间:2025-03-10 15:25:02 0 删除 编辑

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 的简单示例:

rustup 1.28.0/1.28.1 发布

Rust 官方于 2025 年 3 月 2 日发布了 Rust 安装管理工具 Rustup 1.28.0 版本,带来诸多重要变化,具体内容如下:

  1. 新成员加入:Chris Denton 加入 Rustup 团队,其在 Rust 项目 Windows 相关部分的丰富经验,有助于解决 Windows 特定问题。
  2. 使用方式变更
  • 对于尚未在本机安装的工具链,rustup 不再自动安装,即使它是活跃的。如需安装,需采用无参数运行 rustup toolchain install 。
  • 通过 rustup toolchain install 或 rustup default 安装与主机不兼容的工具链时,需添加 --force-non-host 标志,否则会被拒绝。
  • 新支持平台:正式支持 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 版本,包含的变更如下:

    1. 默认启用自动安装,但是可以通过设置环境变量 RUSTUP_AUTO_INSTALL 为 0 来关闭。
    2. rustup show active-toolchain 将输出信息显示在一行上
    3. 修复一些 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

    社区学习交流平台订阅:

    • Rustcc 论坛: 支持 RSS
    • 微信公众号:Rust语言中文社区

    原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

    请登录后发表评论 登录
    全部评论

    注册时间:2020-06-11

    • 博文量
      1769
    • 访问量
      718391