Rust 所有权与生命周期从入门到实战:先划清数据、调用与失败边界

📅 2026/8/11 19:04:21
Rust 所有权与生命周期从入门到实战:先划清数据、调用与失败边界
Rust 所有权与生命周期从入门到实战先划清数据、调用与失败边界我以前重构时喜欢先把边缘函数拆得很漂亮最后才发现核心数据到底归谁还没想清楚生命周期标注又得重来。现在我会先画出数据从哪里创建、谁可以修改、谁只是读取再动手拆模块。一个实用的起点是状态由顶层创建并拥有业务函数尽量接收借用的数据只在确实需要共享所有权时用Arc。这不是唯一结构但能让我在小项目里少绕一些弯路。graph TD Owner[入口创建状态] -- Api[定义读取和修改接口] Api -- Worker[无状态处理函数] Worker -- Result[返回结果不持有状态]use std::sync::Arc; struct AppState { cache_capacity: usize, } fn format_event(state: AppState, event: str) - String { format!(event{event}, cache_capacity{}, state.cache_capacity) } fn main() { let state Arc::new(AppState { cache_capacity: 256 }); let message format_event(state, example); println!({message}); }这里的示例故意没有数据库地址、真实事件或运行环境配置。写笔记时用占位数据足够说明所有权关系也能避免把连接信息和业务数据带进代码片段。拆分后我会问自己三件事状态是否真的需要共享可变性函数能否只拿T错误和输入数据是否还能在边界处被校验。答案不清楚时先不急着抽象。