pub fn slugify(title: &str) -> StringExpand description
将标题转换为 URL 友好的 slug。
汉字转为无声调拼音(每字独立成词,用 - 分隔,如 你好 → ni-hao);
ASCII 字母数字与 -/_ 保留;其余字符替换为 -,连续 - 合并。
结果截断至 100 字符;若全部被过滤则回退为当前时间戳。
多音字取默认读音(不处理歧义),博客 slug 场景足够。
单遍状态机实现:旧实现 to_lowercase 分配一次 String + split.collect::<Vec> +
join 再分配 + take.collect 第三次分配,共 4 次堆分配、3 遍扫描。
现用 prev_dash 状态在单遍内合并连续 - 并按需截断,1 次分配、1 遍扫描。