范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Rust学习笔记(七)所有权与函数

  将值传递给函数在语义上和把值赋给变量是类似的。
  把值传递给函数将发生移动或复制,例:fn main() {     let s = String::from("hello");     take_ownership(s);     let n = 666;     makes_copy(n);      println!("n: {}", n);     println!("s: {}", s);  }  fn take_ownership(str: String) {     println!("str: {}", str); }  fn makes_copy(number: i32) {     println!("number: {}", number); }
  build以上代码,编译器将提示错误: error[E0382]: borrow of moved value: `s`  --> srcmain.rs:8:23   | 2 |     let s = String::from("hello");   |         - move occurs because `s` has type `String`, which does not implement the `Copy` trait 3 |     take_ownership(s);   |                    - value moved here ... 8 |     println!("s: {}", s);   |                       ^ value borrowed here after move  For more information about this error, try `rustc --explain E0382`. error: could not compile `rust_learning` due to previous error
  根据提示可以看出: fn main() {     let s = String::from("hello");     take_ownership(s);//s的值移动到了函数里,所以s失效,s在后面就不可再次使用。     let n = 666;     makes_copy(n);//x本该也移动至函数,但i32是可Copy的,所以这里发生的是复制,因此x在后面还可使用。      println!("n: {}", n);     println!("s: {}", s);  }  fn take_ownership(str: String) {//str进入作用域     println!("str: {}", str); }//离开作用域,Rust调用drop方法,str的堆内存被释放  fn makes_copy(number: i32) {//number(由n复制的副本)进入作用域     println!("number: {}", number); }//i32是完全存储在栈上的数据,所以离开作用域后被弹出栈即可,不需释放堆内存。 返回值与作用域
  函数在返回值的过程中也会发生所有权的转移。例: fn main() {     let s1 = give_ownership();//give_ownership将返回值所有权移动给s1      let s2 = String::from("hello");//s2进入作用域      let s3 = take_and_give_back(s2);//s2被移动到函数take_and_give_back里                                     //函数又将返回值移动给s3      println!("{} {} {}", s1, s2, s3)//由于s2已被移动至函数take_and_give_back里,所以此处s2无效  }  fn give_ownership() -> String{     let str = String::from("hello");     str//返回str并将其所有权移出给调用它的函数 }  fn take_and_give_back(str: String) -> String {     str//返回str并将其所有权移出给调用它的函数 }
  一个变量的所有权总是遵循同样的模式: 把一个值赋给其它变量时就会发生移动(可Copy的变量发生复制) 当一个包含堆内存上数据的变量离开作用域时,它会被drop方法释放,除非其所有权移动到另一个变量上了
  如何让函数使用某个值,但不获得其所有权? 一种做法是将值传入函数, 函数用完后再将其移动回来。例: fn main() {     let s1 = String::from("hello");      let (s2, len) = calculate_length(s1);      println!("The length of {} is {}.", s2, len);  }  fn calculate_length(s: String) -> (String, usize) {     let length = s.len();     (s, length) }
  但这种实现看起来不够优雅,所以Rust有一个特性叫做"引用(Reference)" 对于引用的概念及用法将在下一节继续。

618抵制显卡接盘行动本次矿难已经两年了20192020年,这是游戏玩家的盛宴。那时候铭瑄580巨无霸全新常年799899,拼多多百亿补贴1660s两根8G海盗船的3200内存条才1949,2070s两耐摔护眼资源多读书牛2AI学习平板大家好,我是波导终结者。家里的小朋友也五六岁了,平时学习却不怎么认真,玩变形金刚和乐高可以玩一整天,要他练几页字却像是要了老命。现在的学习,各种手机平板已经是不可能离得开的了,就算智能锁都出3D人脸识别了?靠不靠谱?时至今日,智能锁已经是很普遍的入户安全产品了,不仅能解放钥匙,还承载了更多的入户体验和安全守护。很多人对智能锁的现在已经不是单单的密码锁指纹锁了。已经有更多的技术加入到了智能锁里面2022备用机选择本人重度手机使用者,加上开宽带又增加了两个号码就想弄台备用机。要求能玩王者刷抖音,CPU最低骁龙660665670675710835845天玑800U,麒麟970810,等。电池比玩转MIUI13,小部件里的3大实用功能分享MIUI13的小部件算是它的一大亮点,也有不少人为了这个功能专门去刷机更新MIUI13。我使用MIUI13的小部件也有一段时间了,不过日常使用频率最高无外乎3个类型的小部件时钟,天IP属地公开水军裸泳藏不住了近日,包括微信微博抖音等的互联网平台纷纷上线了显示IP属地功能,用户在发言和分享时,会根据运营商提供的信息显示所在地,而且用户无法主动开启或关闭相关展示。该功能上线后,引发了网民的马斯克与川普440亿美元只为让你发声?推特新晋老板马斯克刚刚表示将解禁前总统特朗特的平台账号。于是,无数网友纷纷脑补出一出大戏一个男人豪掷440亿美元,就为了另一个男人能在曾经最爱的社交媒体平台上自由发声。川普是个推特58同城,裁员惹上麻烦了来源丨HR新逻辑原创首发作者丨HRLogic编辑中心嗨,这里是HR新逻辑HRL!近日,58同城员工侯某在网上发表长文,怒斥58同城的不公平裁员。据侯某所述,他就职于58同城旗下的安盘点互联网花式裁员近期,各行各业裁员消息纷至沓来,其中尤以互联网企业引起极大关注,几乎所有一线大厂都有涉及。不光曝出的裁员比例高,而且连裁员的叫法也翻出了新花样。一般公司裁员都是辞退信,有些互联网企26分钟充电5012GB256GB,高配置降价到1999元,价格变得更亲民市面上的手机品牌众多,数一数二的几家至少有一项突出的优势,像苹果就以其独有的iOS系统享誉全球,索尼以其强大的摄影功能收获大批的粉丝。因此,国内手机品牌为了获得更多的市场份额,在保雷军真良心!小米机皇降4500,12GB512GB2K大屏最近小米的降价操作一波接一波,多少有点让人应接不暇。本以为前段时间小米11Ultra的降价已经是大操作了,没想到这段时间小米MIXFold的降价更加让人心动,直降4500!今天我们
宝能聚创新能源为何在人才与核心技术上持续投入?因追求极致品质众所周知,对于国家来说,制造业是实体经济的一个关键,制造业的核心就是创新,就是掌握关键核心技术。而对于企业来说,要有自主创新的骨气和志气,加快增强自主创新能力和实力。宝能集团作为一爱普生携明星产品亮相广印展!推动数字印刷升级新浪潮2021年7月21至24日,第29届上海国际广告技术设备展览会(以下简称广印展)于上海国家会展中心如期举办。在这场拥有29年历史的全球知名行业盛会上,作为数字印刷业界领先企业,爱普微云人工智能获数亿元融资,隐形正畸行业成待挖金矿近日,距上次融资不到三个月,数字化牙科智能医疗服务公司微云人工智能宣布再次完成新一轮数亿元人民币融资。本轮融资由金茂资本领投,熠美投资英国家族基金等机构跟投。创始人刘鹏表示,本轮融吉利汽车4月销量,单月卖100331辆,星瑞热卖领克破50万进入5月份后,红旗销量发布引发各大品牌纷纷发布4月销量,随后奇瑞长安比亚迪长城等也先后发布销量快报,在5月10日晚些时候,作为中国品牌的领跑者之一吉利汽车也发布了4月份的销量数据。丰田亚洲狮和斯柯达明锐PRO咋选,这四点对比很重要上海车展上,来自大众集团全新MQBEVO数字智能架构平台的上汽斯柯达重磅之作全新明锐PRO吸引了不少注意力。从空间到配置从舒适度到智能化等各方面的全新升级,更是以全面占优的产品力直4月SUV销量排名出炉,日系车5款车上榜,CRV夺冠很意外上一篇我们对过去4月份的轿车销量进行了分析和辣评,今天主要对SUV细分市场进行分析。日前,中国乘联会发布了2021年4月份最新的零售销量数据,根据乘联会官方数据显示4月份国内狭义乘重庆试驾哈弗赤兔,满身智能安全配置7。7秒破百,这车能买吗?作为2021年的首个A级车展,第十九届上海国际车展正在如火如荼,据上海国际车展组委会发布数据显示本届车展上共有多达138场新闻发布会,超过万名媒体和记者争相报道。在众多新车发布会上盘点上海车展SUV颠覆者吉利星越L发布,全系搭沃尔沃发动机上海车展,继续盘点,干货不断,新车满满。今天我们继续盘点第十九届上海国际车展,在本年度的上海国际车展上,如果说哪个展台上的新车从早到晚一直有人在围观的话,那吉利星越L绝对是其中一台长安汽车发布4月销量快报蓝鲸车型销量破9万,3款车月销破万进入5月后,各大汽车厂商纷纷公布各自产销数据,我们日前也通过长安汽车的官方渠道得到了长安汽车集团4月份的销量数据。根据长安汽车公布的最新销量数据显示,长安汽车集团在刚刚过去的4月份本田凌派车门锈穿,4S店回应洗车水质问题造成,车主很受伤汽车生锈问题已经是汽车投诉的一大集中点,也是各大汽车厂商消费者最为关注的汽车质量问题。其实车身生锈问题,对车主来说,是个绝对不允许存在的问题,而对各大汽车品牌来说,不仅仅是国产品牌3月份最全的汽车销量排名,共计498款车型,你的爱车排第几?根据中汽协和乘联会公布的最新销量数据显示2021年3月份国内狭义乘用车市场销量达175。2万辆,同比增长67。2,环比增长48。613月份累计销量超过500万辆,达到509。2万辆