[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"public:announcements":3,"public:navigations:zh":4,"footer:categories:zh":56,"post:detail:post-15-Rust所有权与借:zh":177},[],[5,18,25,33,41,49],{"id":6,"title":7,"url":12,"icon":13,"parent_id":13,"location":14,"order":6,"is_active":15,"target_blank":16,"created_at":17,"updated_at":13},1,{"zh":8,"en":9,"ja":10,"zh_TW":11},"首页","Home","ホーム","首頁","\u002F",null,"header",true,false,"2026-09-30T18:09:54.251095Z",{"id":19,"title":20,"url":24,"icon":13,"parent_id":13,"location":14,"order":19,"is_active":15,"target_blank":16,"created_at":17,"updated_at":13},2,{"zh":21,"en":22,"ja":23,"zh_TW":21},"文章","Posts","記事","\u002Fposts",{"id":26,"title":27,"url":32,"icon":13,"parent_id":13,"location":14,"order":26,"is_active":15,"target_blank":16,"created_at":17,"updated_at":13},3,{"zh":28,"en":29,"ja":30,"zh_TW":31},"分类","Categories","カテゴリー","分類","\u002Fcategories",{"id":34,"title":35,"url":40,"icon":13,"parent_id":13,"location":14,"order":34,"is_active":15,"target_blank":16,"created_at":17,"updated_at":13},4,{"zh":36,"en":37,"ja":38,"zh_TW":39},"标签","Tags","タグ","標籤","\u002Ftags",{"id":42,"title":43,"url":48,"icon":13,"parent_id":13,"location":14,"order":42,"is_active":15,"target_blank":16,"created_at":17,"updated_at":13},5,{"zh":44,"en":45,"ja":46,"zh_TW":47},"关于","About","概要","關於","\u002Fpage\u002Fabout",{"id":50,"title":51,"url":55,"icon":13,"parent_id":13,"location":14,"order":50,"is_active":15,"target_blank":16,"created_at":17,"updated_at":13},6,{"zh":52,"en":53,"ja":54,"zh_TW":52},"留言板","Guestbook","ゲストブック","\u002Fpage\u002Fguestbook",[57,73,87,102,117,133,148,162],{"id":6,"name":58,"slug":63,"description":64,"icon":69,"color":70,"cover_image":13,"created_at":71,"post_count":72},{"en":59,"ja":60,"zh":61,"zh_Hant":62},"Technology","テクノロジー","技术","技術","technology",{"en":65,"ja":66,"zh":67,"zh_Hant":68},"Cutting-edge technology exploration and in-depth analysis covering programming languages, frameworks, and architecture design","プログラミング言語、フレームワーク、アーキテクチャ設計を含む先端技術の探究","前沿技术探索与深度分析，涵盖编程语言、框架、架构设计等核心领域","前沿技術探索與深度分析，涵蓋編程語言、框架、架構設計等核心領域","heroicons:cog-6-tooth","#6366f1","2026-09-30T18:09:53.633610Z",8,{"id":19,"name":74,"slug":78,"description":79,"icon":84,"color":85,"cover_image":13,"created_at":86,"post_count":50},{"en":75,"ja":76,"zh":77,"zh_Hant":77},"Tutorial","チュートリアル","教程","tutorial",{"en":80,"ja":81,"zh":82,"zh_Hant":83},"Hands-on tutorials from scratch with clear steps and complete code for developers at all levels","ゼロから始める実践的なチュートリアル。明確な手順と完全なコードで、全てのレベルの開発者に最適","从零开始的实战教程，步骤清晰，代码完整，适合各阶段开发者学习","從零開始的實戰教程，步驟清晰，代碼完整，適合各階段開發者學習","heroicons:academic-cap","#10b981","2026-09-30T18:09:53.641581Z",{"id":26,"name":88,"slug":92,"description":93,"icon":98,"color":99,"cover_image":13,"created_at":100,"post_count":101},{"en":89,"ja":90,"zh":91,"zh_Hant":91},"Frontend","フロントエンド","前端","frontend",{"en":94,"ja":95,"zh":96,"zh_Hant":97},"Full coverage of web frontend development including Vue, React, new CSS features, and performance optimization","Vue、React、CSSの新機能やパフォーマンス最適化を含むWebフロントエンド開発の全領域","Web前端开发全栈覆盖，包括Vue、React、CSS新特性及性能优化等话题","Web前端開發全棧覆蓋，包括Vue、React、CSS新特性及性能優化等話題","heroicons:computer-desktop","#ec4899","2026-09-30T18:09:53.644838Z",7,{"id":34,"name":103,"slug":108,"description":109,"icon":114,"color":115,"cover_image":13,"created_at":116,"post_count":26},{"en":104,"ja":105,"zh":106,"zh_Hant":107},"Backend","バックエンド","后端","後端","backend",{"en":110,"ja":111,"zh":112,"zh_Hant":113},"Server-side development best practices including API design, database optimization, and microservices architecture","API設計、データベース最適化、マイクロサービスアーキテクチャを含むサーバーサイド開発の実践","服务端开发实战经验，API设计、数据库优化、微服务架构等深度内容","服務端開發實戰經驗，API設計、數據庫優化、微服務架構等深度內容","heroicons:server-stack","#f59e0b","2026-09-30T18:09:53.647836Z",{"id":42,"name":118,"slug":123,"description":124,"icon":129,"color":130,"cover_image":13,"created_at":131,"post_count":132},{"en":119,"ja":120,"zh":121,"zh_Hant":122},"Fullstack","フルスタック","全栈","全棧","fullstack",{"en":125,"ja":126,"zh":127,"zh_Hant":128},"End-to-end development guides covering the full project lifecycle and technology stack selection","フロントエンドからバックエンドまでの開発プロセス全体をカバーするガイド","从前端到后端的全流程开发指南，覆盖完整项目生命周期与技术选型","從前端到後端的全流程開發指南，覆蓋完整項目生命週期與技術選型","heroicons:swatch","#8b5cf6","2026-09-30T18:09:53.650513Z",0,{"id":50,"name":134,"slug":139,"description":140,"icon":145,"color":146,"cover_image":13,"created_at":147,"post_count":34},{"en":135,"ja":136,"zh":137,"zh_Hant":138},"Essays","エッセイ","随笔","隨筆","essays",{"en":141,"ja":142,"zh":143,"zh_Hant":144},"Technical reflections and development insights recording the programmer's growth journey","プログラマーの成長の軌跡を記録する技術的考察と開発の洞察","技术思考与开发心得分享，记录程序员成长路上的点滴感悟","技術思考與開發心得分享，記錄程序員成長路上的點滴感悟","heroicons:pencil-square","#f43f5e","2026-09-30T18:09:53.653105Z",{"id":101,"name":149,"slug":153,"description":154,"icon":159,"color":160,"cover_image":13,"created_at":161,"post_count":34},{"en":150,"ja":151,"zh":152,"zh_Hant":152},"Tools","ツール","工具","tools",{"en":155,"ja":156,"zh":157,"zh_Hant":158},"Development toolchain and productivity tool recommendations to supercharge your development experience","開発効率を飛躍的に向上させるツールチェーンと生産性ツールの推奨","开发工具链与效率提升利器推荐，让你的开发体验如虎添翼","開發工具鏈與效率提升利器推薦，讓你的開發體驗如虎添翼","heroicons:wrench-screwdriver","#06b6d4","2026-09-30T18:09:53.655605Z",{"id":72,"name":163,"slug":168,"description":169,"icon":174,"color":175,"cover_image":13,"created_at":176,"post_count":132},{"en":164,"ja":165,"zh":166,"zh_Hant":167},"Translation","翻訳","翻译","翻譯","translation",{"en":170,"ja":171,"zh":172,"zh_Hant":173},"Curated translations of high-quality foreign technical articles to keep up with international trends","国際的な技術トレンドを追うための厳選された海外技術記事の翻訳","优质外文技术文章精选翻译，紧跟国际技术前沿动态","優質外文技術文章精選翻譯，緊跟國際技術前沿動態","heroicons:language","#84cc16","2026-09-30T18:09:53.658041Z",{"id":178,"title":179,"subtitle":13,"slug":180,"source":181,"source_url":13,"audio":13,"video":13,"video_url":13,"content":182,"excerpt":183,"cover_image":13,"author":184,"category":187,"tags":188,"status":212,"visibility":213,"password":13,"views":214,"likes_count":132,"is_pinned":16,"allow_comments":15,"comments_count":42,"is_password_protected":16,"meta_title":179,"meta_description":183,"meta_keywords":215,"created_at":216,"published_at":216,"updated_at":217,"reading_time":6},15,"Rust 所有权与借用机制：彻底理解生命周期","post-15-Rust所有权与借","原创","# Rust 所有权与借用机制：彻底理解生命周期\n\nRust 不用 GC 却能保证内存安全，核心武器是所有权系统和借用检查器。编译期检查内存访问合法性，运行时零开销，但理解门槛是主流语言中最高的。\n\n## 三大所有权铁律\n\n1）每个值有且仅有一个所有者；2）所有者离开作用域，值立即被 drop；3）同一值最多只能有一个可变引用，可变和不可变引用不能同时存在。几乎所有初学生命周期错误都是违背第3条。\n\n```rust\n```rust\nuse std::collections::HashMap;\n\n#[derive(Debug, Clone)]\nstruct User { id: u32, username: String, profile: Option\u003CBox\u003CUser>> }\n\nstruct UserCache\u003C'a> {\n    users: HashMap\u003Cu32, User>,\n    last_accessed: Option\u003C&'a User>,\n}\n\nimpl\u003C'a> UserCache\u003C'a> {\n    fn new() -> Self { Self { users: HashMap::new(), last_accessed: None } }\n    fn insert(&mut self, user: User) { self.users.insert(user.id, user); }\n    fn get(&'a mut self, id: u32) -> Option\u003C&'a User> {\n        if let Some(u) = self.users.get(&id) {\n            self.last_accessed = Some(u);\n            self.last_accessed\n        } else { None }\n    }\n}\n\nfn longest_str\u003C'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() >= y.len() { x } else { y } }\n\nstruct Parser\u003C's, 'b> where 's: 'b { source: &'s str, buffer: &'b mut [u8] }\n\nimpl\u003C's, 'b> Parser\u003C's, 'b> where 's: 'b {\n    fn new(source: &'s str, buffer: &'b mut [u8]) -> Self { Self { source, buffer } }\n}\n\nfn main() {\n    let s1 = String::from(\"hello\");\n    let s2 = s1.clone();\n    println!(\"s1={s1}, s2={s2}\");\n    let a = String::from(\"short\"); let b = String::from(\"longest string wins\");\n    println!(\"longest: {}\", longest_str(&a, &b));\n    let mut cache = UserCache::new();\n    cache.insert(User { id: 1, username: \"rosetta\".into(), profile: None });\n    let u = cache.get(1);\n    println!(\"Got user: {:?}\", u.map(|x| &x.username));\n    let mut buf = vec![0u8; 1024];\n    let p = Parser::new(\"input\", buf.as_mut_slice());\n    println!(\"Parser source len: {}\", p.source.len());\n}\n```\n```\n\n## 生命周期标注与约束\n\n当函数\u002F结构体中出现引用时，Rust 需要显式生命周期标注（'a、'b）告知编译器引用有效期关系。's: 'b 表示 's 存活时间不短于 'b，常见于结构体自引用场景。\n\n| 常见错误 | 本质 | 修复模式 |\n|---------|------|---------|\n| use of moved value | 所有权被转移 | .clone()\u002F用&borrow |\n| cannot borrow X mutable+immutable | 违反借用规则 | 缩小作用域\u002F分块 |\n| missing lifetime specifier | 编译器推不出 | 加'a关联输入输出 |\n| lifetime may not live long enough | 引用先被释放 | 延长作用域\u002F改用拥有所有权类型 |\n\n## 最佳实践\n\n写代码初期全用拥有所有权类型（String\u002FVec\u002FBox），编译通过后再按需改为引用。不要过早纠结生命周期标注，让编译器给你驱动式修改建议。","系统攻克 Rust 最独特概念：所有权规则、可变\u002F不可变借用约束、引用生命周期标注。通过编译错误示例 + 修复方案，彻底掌握借用检查器思维方式，写出安全零抽象开销的系统代码。",{"id":6,"username":185,"nickname":185,"avatar":13,"cover_image":13,"bio":13,"website":13,"github":13,"avatar_source":13,"resolved_avatar_url":13,"title":13,"created_at":186},"Choyeon","2026-09-30T18:09:53.330367Z",{"id":6,"name":61,"slug":63,"description":67,"icon":69,"color":70,"cover_image":13,"created_at":71,"post_count":132},[189,195,200,206],{"id":190,"name":191,"slug":192,"color":193,"icon":13,"is_active":15,"created_at":194,"post_count":132},13,"算法","algorithms","#ef4444","2026-09-30T18:09:53.700921Z",{"id":178,"name":196,"slug":197,"color":198,"icon":13,"is_active":15,"created_at":199,"post_count":132},"性能优化","performance","#f97316","2026-09-30T18:09:53.707190Z",{"id":201,"name":202,"slug":203,"color":204,"icon":13,"is_active":15,"created_at":205,"post_count":132},21,"Rust","rust","#dea584","2026-09-30T18:09:53.723993Z",{"id":207,"name":208,"slug":209,"color":210,"icon":13,"is_active":15,"created_at":211,"post_count":132},24,"Linux","linux","#fcc624","2026-09-30T18:09:53.731844Z","published","public",256,"Rust,性能优化,算法,Linux","2026-09-06T23:09:53.733462Z","2026-10-01T04:54:47.994804Z"]