当前位置: 首页 > news >正文

如何看网站做的好坏爱尚网站建设

如何看网站做的好坏,爱尚网站建设,上海网站开发公,个人主页源代码一、生命期是什么 生命期,又叫生存期,就是变量的有效期。 实例1 {let r;{let x 5;r &x;}println!("r: {}", r); }编译错误,原因是r所引用的值已经被释放。 上图中的绿色范围’a表示r的生命期,蓝色范围’b表示…

一、生命期是什么

生命期,又叫生存期,就是变量的有效期。
实例1

{let r;{let x = 5;r = &x;}println!("r: {}", r);
}

编译错误,原因是r所引用的值已经被释放。
在这里插入图片描述

上图中的绿色范围’a表示r的生命期,蓝色范围’b表示x的生命期。

实例2

fn longer(s1: &String, s2: &String) -> &String {if s2.len() > s1.len() {s2} else {s1}
}
fn main() {let r;{let s1 = "rust".to_string();let s2 = "ecmascript".to_string();r = longer(&s1, &s2);}println!("{} is longer", r);
}

longer函数取s1和s2两个字符串较长的一个返回其引用值。但这段代码不会通过编译,原因是最后使用r的时候,s1和s2都已经失效了。虽然可以把r的使用移到s1和s2的生命期以内避免错误,但对于函数来说,它并不知道调用者如何使用它,所以为了保障自己传递出去的值始终是可使用的,就要消除一切危险,直接不能通过编译。

所以下面代码编译错误

fn longer(s1: &String, s2: &String) -> &String {if s2.len() > s1.len() {s2} else {s1}
}
fn main() {let r;{let s1 = "rust".to_string();let s2 = "ecmascript".to_string();r = longer(&s1, &s2);println!("{} is longer", r);}
}

二、标明生命期

虽然生命期的含义是变量的有效期,但其实只应用于引用。
一些场景,必须显式标明引用的生命期。
标明生命期,并不是改变引用的有效期,只是显式告诉编译器引用的有效期。悬垂引用的问题还存在,还需要程序员自己处理。

(一)生命期注释是标明引用生命期的办法。
语法格式:
用单引号开头,跟着生命期名字:

&i32 // 常规引用
&'lifea i32 // 含有生命期注释的引用
&'lifeb mut i32 // 含有生命期注释的可变引用

(二)特殊生命期

'static

'static表示的生命期是从程序运行开始到程序运行结束。
所有字符串字面量都是 &'static str

三、使用生命期

(一)函数中使用生命期
改造longer函数:

fn longer<'a>(s1: &'a String, s2: &'a String) -> &'a String {if s2.len() > s1.len() {s2} else {s1}
}
fn main() {let r;{let s1 = "rust".to_string();let s2 = "ecmascript".to_string();r = longer(&s1, &s2);println!("{} is longer", r);}
}

我们把生命期作为泛型参数,标明函数返回值的生命期与两个参数的生命期是一样的,这样就能编译通过了。意思是只要返回值和参数的生命期一样时,就能使用longer函数。

(二)结构体中使用生命期

fn main() {struct Str<'a> {content: &'a str}let s = Str {content: "string_slice"};println!("s.content = {}", s.content);
}方法定义
impl<'a> Str<'a> {fn get_content(&self) -> &str {self.content}
}

这里返回值并没有标明生命期,但是加上也无妨。这是一个历史问题,早期Rust不支持生命期自动判断,所有的生命期必须严格声明,但现在的Rust已经支持了。

http://www.yayakq.cn/news/638212/

相关文章:

  • 网站开发用php还pyt h on人事管理软件
  • 做外贸网站好的公司网络整合营销案例
  • 网站建设与搜索网站ipv6改造怎么做
  • 做任务赚佣金网站有哪些房地产网页设计图片素材
  • 建一个下载网站要什么cms系统重庆市建设工程信息网官网查询证书下载
  • 泽州网站设计网站怎么做跳转
  • 网站备案跟域名备案自媒体培训学校
  • 湛江cms建站系统建设企业网站找谁
  • 河北省建设机械协会是正规网站吗如何做起一个网站推广
  • 网站空间购买时选择什么脚本语言个人网页的内容模板设计
  • 网站建设制作过程企业网站建设费记什么科目
  • 网站设计一般多长时间深圳昨天下午出大事
  • vps做网站需要做哪些准备中国建设银行数据管理部网站
  • 怎样优化网站排名昆山网站建设需要多少钱
  • 网站备案用的方案建设wordpress 微信 微博
  • 广告公司网站建设网站备案进度
  • 系统 网站开发工程师网站后台口令
  • 招聘设计师去哪个网站医药cms是什么意思
  • 石家庄市市政建设工程公司网站wordpress转app
  • 网站备案号中信息有变合肥网站设计网址
  • 私人制定网站1688网页版登录入口
  • 建设美食电子商务网站徐州市城乡和城乡建设厅网站首页
  • 视频网站建设框架战略网页游戏开服表
  • 福州网站建设加推广携程网站模板
  • 百度站长工具怎么查排名专业做二手网站有哪些
  • 外链建设应如何进行seo技术蜘蛛屯
  • 什么是做学院网站网站排名查询
  • 北京做网站比较好的谷德设计网app
  • 做网站的具体需求中国中小企业河南网
  • 漳州哪里做网站wordpress json api auth