📌 区别回顾
-
map_while(Result::ok)
-
遇到第一个
Err
就 直接停止整个迭代。 -
适合"文件坏了就不再处理"的场景。
-
风险:如果只是一行小错误,后面的好行也不会处理。
-
-
filter_map(Result::ok)
-
遇到
Ok
→ 正常取出。 -
遇到
Err
→ 丢掉,继续下一行。 -
适合"日志里偶尔坏一行,不影响整体处理"的场景。
-
📌 日志处理场景建议
👉 日志处理一般选择 filter_map(Result::ok)
因为:
-
日志可能很大,偶尔有乱码/截断/部分写入失败。
-
如果你用
map_while
,一旦遇到一行坏数据,就整个处理停掉,不太合适。 -
用
filter_map(Result::ok)
,坏行跳过,不影响后面分析,鲁棒性更好。
📌 推荐写法