使用有限状态机作为数据结构:构建超大规模索引

2025-08-14

本文介绍了如何使用有限状态机(FSM)作为数据结构来表示有序集合和映射,并展示了如何利用Rust的fst库构建高效的索引。文章深入探讨了FSM的构建过程,包括Trie和FSA的构造,以及如何处理大量数据(例如,对来自2015年7月公共爬取存档的16亿个URL进行索引)。此外,文章还介绍了内存映射、与正则表达式的自动机交集、基于Levenshtein距离的模糊搜索以及流式集合操作等技术。

阅读更多
开发

Rust 中的 panic 和 unwrap(): 何时以及如何使用?

2025-05-21

本文深入探讨了 Rust 编程语言中 `panic` 和 `unwrap()` 的使用。作者认为,`panic` 不应用于常规错误处理,而应作为程序中错误的信号。`unwrap()` 在测试、示例代码和原型设计中是可以接受的,但在生产环境中应谨慎使用,因为它可能导致程序崩溃。作者详细解释了运行时不变式,以及为什么有时无法或不需要将所有不变式转换为编译时不变式。最后,作者建议在可能的情况下使用 `expect()` 而不是 `unwrap()`,并讨论了是否应该对 `unwrap()` 的使用进行 lint 的问题。

阅读更多
开发 unwrap