Rust 借用 API 设计:把生命周期约束藏在正确边界

背景 解析函数返回输入切片通常很自然,但把数据库连接或内部缓存的生命周期暴露出去,会让调用方被迫理解实现细节。 核心判断 只有结果确实借用输入时,才把生命周期关系写进 API。 跨任务、缓存或异步队列的结果通常需要拥有数据。 优先让编译器推断生命周期,不为形式完整添加无意义参数。 最小示例 下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。 pub fn split_at<'a>(input: &'a str, sep: char) -> Option<(&'a str, &'a str)> { input.split_once(sep) } 边界与误区 示例中返回值确实指向 input;separator 是值,不参与借用关系。一次小复制可能换来更简单的长期接口,不应只追求分配次数。 验证方式 编写结果不能超过输入存活时间的编译失败测试;再测长期保存结果的场景,确认必要的 owned 转换发生在清晰边界。 小结 公共 API 只暴露真实需要的借用关系,避免为了少一次分配泄漏内部生命周期。

2026年9月12日 · 1 分钟 · BvBeJ