Hacker News | 📄 原文链接 | 2026-09-28 收录

用 Rust 重新审视「解析而非校验」

来源:eli.thegreenplace.net — 39 分 · by ingve

📋 概述

Eli Bendersky 复盘 Alexis King 那篇著名的《Parse, don't validate》,把它放到 Rust 语境下检视,并特别留意 Rust 标准库与知名项目里符合这一模式的示例。文章的核心是对比:`Vec::first` 返回 `Option<&T>`,因为向量不保证非空,这在 Rust 里是惯用做法;但当一个函数在读环境变量配置目录并强制「列表不能为空」这一不变量时,它往往只在函数内部用 ensure! 断言,返回值类型却没有把这个不变量编码进去。调用方拿到的仍是普通的 `Vec<PathBuf>`,下次仍可能传入空列表,这正是「校验而不解析」的典型缺陷。

🔑 核心要点

💡 金句

「解析而非校验」之所以迷人,是因为它给一个我们熟悉且重要的惯用法起了名字——过去我自己观察和使用过它,却从未明确命名。
← 返回 Hacker News 首页