RUST 静态生命周期和动态生命周期
图例分配在堆和栈上的内存有其各自的作用域它们的生命周期是动态的全局变量、静态变量、字符串字母量、代码等内容在编译时会被编译到可执行文件中的 BSS/Data/RoData/Text 段然后在加载时装入内存因而它们的生命周期和进程的生命周期一致所以静态的所以函数指针的生命周期也是静态因为函数在Text 段中只要进程活着其内存一直存在静态生命周期概述静态生命周期 Rust 中最长的生命周期表示引用在整个程序运行期间都有效。这些数据通常存储在程序的只读内存区域在程序启动时创建在程序结束时销毁特点数据存在于整个程序运行期间通常存储在静态内存区域不需要运行时生命周期检查最安全的引用类型示例// 字符串字面量具有 static 生命周期letstatic_str:staticstrHello, World!;// 静态变量也具有 static 生命周期staticSTATIC_INT:i3242;letstatic_ref:statici32STATIC_INT;// 函数返回 static 生命周期fnget_static_str()-staticstr{This string lives for the entire program}// 在结构体中使用 static 生命周期structStaticHolder{data:staticstr,}implStaticHolder{fnnew()-Self{StaticHolder{data:This data lives forever,}}}fnmain(){letholderStaticHolder::new();println!({},holder.data);letsget_static_str();println!({},s);// 这些引用可以在任何地方使用不会出现悬垂引用letlong_lived_refstatic_str;println!({},long_lived_ref);}动态生命周期概述动态生命周期是指哪些在编译时无法确定具体持续时间需要在运行时通过检查器验证的生命周期这些生命周期通常与作用域相关由编译器推断或通过生命周期参数明确指定特点生命周期在编译不确定需要运行时检查与特定作用域绑定需要生命周期注解来帮助编译器验证安全性更灵活但需要更多编译器支持例子// 函数接受两个引用并返回一个引用需要明确生命周期参数fnlongesta(x:astr,y:astr)-astr{ifx.len()y.len(){x}else{y}}// 结构体包含引用需要生命周期参数structTextEditora{content:astr,selection:astr,}implaTextEditora{fnnew(content:astr)-Self{TextEditor{content,selection:,}}fnselect(mutself,start:usize,end:usize){self.selectionself.content[start..end];}}fnmain(){// 动态生命周期的示例letstring1String::from(long string is long);letstring2String::from(short);letresult;{// 这两个引用有不同的生命周期letpart1string1;letpart2string2;// longest 函数要求两个参数有相同的生命周期 aresultlongest(part1,part2);println!(The longest string is: {},result);}// part1 和 part2 在这里离开作用域// result 仍然有效因为它引用的是 string1 或 string2 的一部分// 而 string1 和 string2 仍然在作用域内println!(Still can use: {},result);// 文本编辑器示例letcontentString::from(This is a long text content for the editor);letmuteditorTextEditor::new(content);editor.select(5,15);println!(Selection: {},editor.selection);// 如果尝试在 content 离开作用域后使用 editor会导致编译错误// {// let local_content String::from(local);// let local_editor TextEditor::new(local_content);// // local_editor 不能离开这个作用域因为它的引用依赖于 local_content// }// println!({:?}, local_editor); // 这会编译错误}总结特性静态生命周期 (static)动态生命周期持续时间整个程序运行期间由作用域决定内存位置静态内存区域栈或堆安全性绝对安全需要编译器验证灵活性低高使用场景字符串字面量、静态变量函数参数、结构体字段

相关新闻

计算机毕业设计之基于SpringBoot的高校运动会管理系统的设计与实现

计算机毕业设计之基于SpringBoot的高校运动会管理系统的设计与实现

本研究致力于构建一种基于springboot的高校运动会管理系统,在开发本系统之前。本人通过学校老师、同学、图书馆的大量走访,通过了解相关的开发语言,以及对介绍了系统的分析与设计过程中,且仔细的概括了系统在开发后进行多次运行与…

2026/7/27 18:58:42阅读更多 →
计算机毕业设计之基于Springboot的高校智慧课堂系统的设计与实现

计算机毕业设计之基于Springboot的高校智慧课堂系统的设计与实现

在信息技术飞速发展的时代背景下,高校教学模式正经历着深刻的变革,智慧课堂系统应运而生。本论文聚焦于高校选课系统的设计与实现,旨在借助先进的技术手段提升教学质量与效率,推动教育教学的信息化进程。本系统采用Java语言进行开…

2026/7/27 18:58:42阅读更多 →
通义千问编程辅助落地手册(企业级DevOps团队已验证的7个黄金提示词模板)

通义千问编程辅助落地手册(企业级DevOps团队已验证的7个黄金提示词模板)

更多请点击: https://codechina.net 第一章:通义千问编程辅助的核心价值与适用边界 通义千问在编程场景中并非万能代码生成器,而是一个以语义理解与上下文协同为核心的智能协作者。其核心价值体现在三方面:显著降低重复性编码负担…

2026/7/27 18:58:42阅读更多 →
深入解析DP83816以太网控制器:从MAC/PHY集成到寄存器配置实战

深入解析DP83816以太网控制器:从MAC/PHY集成到寄存器配置实战

1. 项目概述如果你在嵌入式系统、工业控制或者老式PC主板维修的领域里摸爬滚打过,那么对德州仪器(TI)的DP83816这颗芯片一定不会陌生。它是一款经典的、高度集成的10/100 Mb/s以太网控制器,江湖人称“MacPhyter-II”。这个名字就点…

2026/7/27 20:16:49阅读更多 →
高速SerDes重定时器评估实战:DS125DF1610EVM硬件配置与SigCon Architect软件调试指南

高速SerDes重定时器评估实战:DS125DF1610EVM硬件配置与SigCon Architect软件调试指南

1. 项目概述:从芯片到系统,理解高速链路评估的核心在数据中心、高性能计算和电信设备的设计前线,信号完整性工程师们每天都在与一个无形的敌人战斗:信道损耗。当你的串行数据速率突破10Gbps,甚至向28Gbps、56Gbps迈进时…

2026/7/27 20:16:49阅读更多 →
软考 系统架构设计师历年真题集萃(306)

软考 系统架构设计师历年真题集萃(306)

接前一篇文章:软考 系统架构设计师历年真题集萃(305) 第613题 某公司采用基于架构的软件设计(Architecture-Based Software Design,ABSD)方法进行软件设计与开发。ABSD方法有三个基础,分别是对系统进行功能分解、采用( )实现质量属性和商业需求、采用软件模板设计软件…

2026/7/27 20:16:49阅读更多 →
如何贡献代码到highlight.php:参与开源项目的完整指南

如何贡献代码到highlight.php:参与开源项目的完整指南

如何贡献代码到highlight.php:参与开源项目的完整指南 【免费下载链接】highlight.php A port of highlight.js by Ivan Sagalaev to PHP 项目地址: https://gitcode.com/gh_mirrors/hi/highlight.php highlight.php是一个由Ivan Sagalaev开发的highlight.js…

2026/7/27 20:16:49阅读更多 →
LM5017评估板拆解:恒导通时间控制与耦合电感实现隔离降压电源设计

LM5017评估板拆解:恒导通时间控制与耦合电感实现隔离降压电源设计

1. 项目概述:从评估板到实战设计的深度拆解在工业控制、通信基站或者汽车电子领域,我们常常会遇到一个棘手的问题:系统的主电源可能是24V、48V甚至更高的直流母线,但内部的微控制器、传感器或者隔离接口芯片却需要一个干净、安全且…

2026/7/27 20:16:49阅读更多 →
【JAVA毕设源码分享】基于springboot图书馆座位预约系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot图书馆座位预约系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 20:14:49阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →