Lobsters | 原文链接 | 2026-09-27 收录 · 热度 12

一种比「组件之和」更强的类型

来源: schneems.com — 2026-09-24

概述

作者把一个有 N 个变体的枚举拆成 N 个类型,方法朴素但让他回味良久:std::path::Component 是个和类型,但接受「任意一种组件」的函数签名过于宽泛,于是他给每个变体做了自有 struct。这样 join_normal 可以接收保证来自 Component::Normal 的 NormalComponent,「把某个东西接到绝对路径后面仍然是绝对路径」就由类型系统保证,而不必接受可能是 .. 或本身是绝对路径的 OsStr。

核心要点

金句

如果一个「N 选一」的和类型有用,那么其中每一个具体的分量多半也值得成为独立的类型。
← 返回 Lobsters 首页