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

网站 跳出率 多少沧州营销软件

网站 跳出率 多少,沧州营销软件,主流网站建设技术,国内网站设计4.3.0 写在正文之前 在学习了Rust的通用编程概念后#xff0c;就来到了整个Rust的重中之重——所有权#xff0c;它跟其他语言都不太一样#xff0c;很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节#xff1a; 所有权#xff1…4.3.0 写在正文之前 在学习了Rust的通用编程概念后就来到了整个Rust的重中之重——所有权它跟其他语言都不太一样很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节 所有权栈内存 vs. 堆内存所有权规则、内存与分配所有权与函数本文 喜欢的话记得点赞、收藏加关注哦想要跟着学下去记得关注专栏哦 4.3.1. 把值传递给函数 在语义上把值传递给函数和把值赋给变量是类似的所以一句话总结函数参数传递跟赋值操作是一样的 接下来详细解释一下把值传递给函数将会发生移动Move或者复制Copy 对于实现了Copy trait的数据类型会发生复制所以原本的变量不受影响能够继续使用对于没有实现Copy trait的数据类型会发生复制所以原本的变量会被弃用不可使用 Copy trait、移动、复制的详细介绍在上一篇文章4.2. 所有权规则、内存与分配有讲,这里不再作阐述 fn main(){let machine String::from(6657);wjq(machine);let x 6657;wjq_copy(x);println!(x is:{}, x); }fn wjq(some_string::String){println!({}, some_string); }fn wjq_copy(some_number::i32){println!({}, some_number); }对于变量machine String 是一种复杂数据类型分配在堆上并且没有实现Copy trait。当 machine 被传递给 wjq 函数时发生了移动Move即所有权从变量 machine 转移到了函数参数 some_string。此时machine 的所有权被转移函数 wjq 可以正常使用它但原来的变量 machine 不再可用。如果尝试在之后使用 machine编译器会报错。 对于变量x i32 是一种基本数据类型大小固定分配在栈上并且实现了 Copy trait。当 x 被传递给 wjq_copy 函数时发生了复制Copy即变量 x 的值被复制了一份传递给了函数参数 some_number。由于是值的复制原变量 x 不受影响可以在函数调用之后继续使用。 对于变量some_string 其作用域从第10行被声明开始到第12行的}时就离开了作用域在离开作用域时Rust会自动调用drop函数释放变量some_string所占的内存 对于变量some_number 其作用域是从第14行被声明开始到第16行的}时就离开了作用域离开作用域时不会有特殊的事情发生因为实现了Copy trait的类型在离开作用域时不会调用 Drop 4.3.2. 返回值与作用域 函数在返回值的过程中同样也会发生所有权的转移。 fn main(){let s1 give_ownership();let s2 String::from(6657);let s3 takes_and_gives_back(s2); }fn give_ownership() - String {let some_string String::from(machine);some_string }fn takes_and_gives_back(a_string:String) - String {a_string }函数 give_ownership 的行为 give_ownership 函数创建了一个 String 类型的变量 some_string它的所有权属于 give_ownership 函数。当 some_string 作为返回值返回时其所有权被转移到调用者即变量 s1。结果是some_string 离开 give_ownership 的作用域后不会被释放因为它的所有权已交给 s1。 函数 takes_and_gives_back 的行为 takes_and_gives_back 函数接受一个 String 类型的参数 a_string。调用该函数时传入的参数s2的所有权被转移到函数的参数 a_string。函数将 a_string 返回时其所有权从 a_string 再次转移给调用者即变量 s3。此时变量 s2 不再可用因为其所有权已被转移给 takes_and_gives_back而函数的返回值赋给了 s3。 一个变量的所有权总是遵循同样的模式 把一个值赋给其它变量时就会发生移动只有实现了Copy trait 的类型如基本类型i32, f64 等在赋值时才会进行复制当一个包含堆数据的变量离开作用域时它的值就会被drop函数清理掉除非数据的所有权被移动到另一个变量上。 4.3.3. 让函数使用某个值而不获得其所有权 有的时候代码的本意是让函数使用变量但不想因此失去对数据的使用权这时候就可以这么写 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, uszie) {let length s.len();(s, length) }在这个例子中s1不得不把所有权交给s但这个函数在返回时把s也原封不动地返回把数据所有权交给了s2这样做就把数据所有权又交给了main函数里的变量使得s1下的数据又能够在main函数中使用虽然换了个变量名。 这种做法太麻烦也太笨了。 Rust针对这种场景有一个特性叫引用(Reference),让函数使用某个值而不获得其所有权。 这个特性将会在下篇文章中讲。
http://www.dnsts.com.cn/news/82717.html

相关文章:

  • 网站开发需要配置哪些人员增城新塘网站建设
  • 淘宝网站是谁做的好处网站建设开题报告数据库建立
  • 江门网站建设推广策划设计好的装修公司
  • html网站免费模板胶南网站建设
  • 福建省建设厅网站林瑞良北京网页设计公司
  • wordpress读取父分类列表企业网站改版seo
  • 网站建设维护资质做水果蔬菜生意网站
  • c 网站开发社区网站制作
  • 招远网站建设招聘手机网站作用
  • 2003访问网站提示输入用户名密码wordpress 上传附件按钮美化
  • 西安建网站的公司wordpress 清除cookie
  • 建设银行贷款官方网站电子商务网站特色
  • 网站建设模板个人泰州seo
  • 闵行网站设计有限责任公司成立条件
  • 做网站注意的问题做网站找哪家好要钱吗
  • 家装行业网站建设网站建设网站营销网站托管一体化
  • 深圳傻瓜式网站建设公司好吗中国建设银行青岛分行网站
  • 网站开发环境准备wordpress程序迁移
  • 网站的备案的要多少钱做网站 看什么书
  • 建设网站的价钱郑州做网站的专业公司有哪些
  • 郑州网站制作招聘高校网站建设的优势和不足
  • 西安外贸建站php做的网站怎么调试
  • 电商网站后台建设问题江西省上饶市城乡建设网站
  • 广告模板在哪个网站好中国电影家协会会员
  • 咨询网站公司建设计划书巨鹿网站建设多少钱
  • 国内vps推荐优化课程体系
  • 外贸机械网站苏州高新区建设局网站管网
  • 做的网站放在阿里云net网络网站建设
  • 网站还未被收录可以做推广吗做网站好还是做微信小程序好
  • 网站建设优化服务平台统一e商城app下载