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

微网站功能列表中国建设银行招聘

微网站功能列表,中国建设银行招聘,东光有做网站的吗,河南建设文章目录 所有权引用和借用可变引用悬垂引用 所有权 Rust通过所有权来管理内存#xff0c;最妙的是#xff0c;这种检查只发生在编译期#xff0c;因此对于程序运行期#xff0c;不会有任何性能上的损失。 使用堆和栈的性能区别#xff1a; 写入方面#xff1a;入栈比在… 文章目录 所有权引用和借用可变引用悬垂引用 所有权 Rust通过所有权来管理内存最妙的是这种检查只发生在编译期因此对于程序运行期不会有任何性能上的损失。 使用堆和栈的性能区别 写入方面入栈比在堆上分配内存要快。 因为入栈时操作系统无需分配新的空间只需要将新数据放入栈顶即可。相比之下在堆上分配内存则需要更多的工作这是因为操作系统必须首先找到一块足够存放数据的内存空间接着做一些记录为下一次分配做准备。 读取方面出栈比读取堆上的数据快。 栈数据往往可以直接存储在 CPU 高速缓存中而堆数据只能存储在内存中。访问堆上的数据比访问栈上的数据慢因为必须先访问栈再通过栈上的指针来访问内存。 因此处理器处理分配在栈上数据会比在堆上的数据更加高效。 Rust的所有权原则 Rust 中每一个值都被一个变量所拥有该变量被称为值的所有者一个值同时只能被一个变量所拥有或者说一个值只能拥有一个所有者当所有者(变量)离开作用域范围时这个值将被丢弃(drop) 简单说就是每一个值堆上的值有且只有一个所有者变量当这个变量出了作用域那么这个值也被丢弃在堆上也会丢弃。 看一段代码 fn main(){let x: str hello world;let y x;println!({},{},x,y); }这段代码并不会报错这是因为 x 在这里只是引用了字符串没有所有权所以 let y x; 是对引用的拷贝不会有所有权的转移具体看下一节 “引用与借用” 函数的传参和返回 传参 fn main() {let s String::from(hello); // s 进入作用域takes_ownership(s); // s 的值移动到函数里 // s 所以到这里不再有效let x 5; // x 进入作用域makes_copy(x); // x 应该移动函数里// 但 i32 是 Copy 的所以在后面可继续使用 x} // 这里, x 先移出了作用域然后是 s。但因为 s 的值已被移走// 所以不会有特殊操作fn takes_ownership(some_string: String) { // some_string 进入作用域println!({}, some_string); } // 这里some_string 移出作用域并调用 drop 方法。占用的内存被释放fn makes_copy(some_integer: i32) { // some_integer 进入作用域println!({}, some_integer); } // 这里some_integer 移出作用域。不会有特殊操作返回 fn main() {let s1 gives_ownership(); // gives_ownership 将返回值移给 s1let s2 String::from(hello); // s2 进入作用域let s3 takes_and_gives_back(s2); // s2 被移动到takes_and_gives_back 中,它也将返回值移给 s3 } // 这里, // s3 移出作用域并被丢弃。 // s2 也移出作用域但已被移走所以什么也不会发生。 // s1 移出作用域并被丢弃fn gives_ownership() - String { let some_string String::from(hello); // some_string 进入作用域.some_string // 返回 some_string 并移出给调用的函数 }// takes_and_gives_back 将传入字符串并返回该值 fn takes_and_gives_back(a_string: String) - String { // a_string 进入作用域a_string // 返回 a_string 并移出给调用的函数 }引用和借用 在 Rust 中获取变量的引用叫做借用。 引用x解引用*x 用在函数参数和函数返回值 fn main() {let s1 String::from(hello);let len calculate_length(s1);println!(The length of {} is {}., s1, len); }fn calculate_length(s: String) - usize {s.len() }可变引用 引用默认是不能修改值的想要修改值需要使用可变引用 fn main() {let mut s String::from(hello);change(mut s); }fn change(some_string: mut String) {some_string.push_str(, world); }要注意的是特定数据的可变引用在同一个作用域只能存在一个并且可变引用和不可变引用不能同时存在。 新旧编译器的引用作用域不同旧编译器1.31之前的引用作用域结束于最近的花括号处而新编译器的引用作用域改变为 最后一次使用的位置。 这种优化行为叫做 Non-Lexical LifeTimes(NLL). 悬垂引用 指引用指向某个值后值被释放掉指针仍然存在的情况。 在 Rust 中编译器可以确保引用永远也不会变成悬垂状态当你获取数据的引用后编译器可以确保数据不会在引用结束前被释放要想释放数据必须先停止其引用的使用。 释放引用 fn dangle() - String { // dangle 返回一个字符串的引用let s String::from(hello); // s 是一个新字符串s // 返回字符串 s 的引用 } // 这里 s 离开作用域并被丢弃。其内存被释放。// 危险// 应该更改为 fn no_dangle() - String {let s String::from(hello);s }
http://www.pierceye.com/news/503065/

相关文章:

  • 手机网站要求软文推广图片
  • 网站在哪里建立用h5开发的网站模板
  • 深圳建英文网站小学生作文网
  • 画室网站模板德阳 网站建设
  • 池州网站建设网站建设网站开发技术与应用课程设计
  • 淘宝上做网站可信吗怎么建设游戏试玩平台网站
  • 个人网站有哪些类型公众号开发教程零基础
  • 合肥做兼职网站户县住房和城乡建设局官方网站
  • 集团网站源码域名备案成功如何做网站
  • 吉林省建设监理协会网站诚信建设智慧团建官网登录
  • 萧县住房和城乡建设局网站文学网站模板下载
  • 家用电脑可以做网站吗wordpress获取文章信息
  • 山东公路建设集团网站wordpress插件代码
  • 惠州网站公司网站制作成app
  • 站群管理系统汕头网站建设和运营
  • 泉州哪里做网站开发攻击asp网站
  • 网站参考模板网络营销案例论文3000字
  • 网站开发 盈利采购网站模板
  • 营销网站建设的规则徐州经济开发区网站
  • 做动图的网站知乎wordpress 死链提交
  • 无锡网站维护公司安卓手机优化软件排名
  • 怎么查一个网站做的外链浏览器网站免费进入
  • 济南网站建设小程序必要网站用什么做的
  • 京东商城网站怎么做wordpress幻灯
  • 建设银行明细网站能查多久企业取名
  • 总行网站建设银行报培训机构是干什么的
  • 企业网站推广建议淳安千岛湖建设集团网站
  • 网站建设代码优化石家庄门户网站制作
  • 网站可以制作ios网站源码提取
  • 建设银行网站怎么开通手机通知做网站回答