Rust之&和&mut

Rust中, mut 修饰的变量具有可变性

let mut a = String::from("Hi");
a.push('a');
println!("{}", a);
// 输出: Hia

mut用于说明是否对应内存的值是否可以修改

let a = &       mut    String::from("Hi");
//     引用   可修改    堆上的一块内存
// 综合起来:a 代表一个指向堆上的一块可修改的内存的引用
// 即:a 是 "Hi" 的可变引用

假如将上面的例子中的 & 和 mut 调换位置会怎么样?

let a = mut        &      String::from("Hi");
//     可修改     引用      堆上的一块内存
//  综合起来:a 代表一个指向堆上的一块不可修改的内存的引用,而且这个引用的指向
//  是可以被修改的 (mut 决定的),那么就代表 a 的内存是可以被修改的,这样一来就
//  代表 a 是一个可变的变量,就和 a 的声明有了矛盾,编译器就会报错。
// 以获取可更改指向的可变引用举例
let mut s1 = String::from("Hi");
let mut s2 = String::from("There");
​
let mut r = &mut s1;
*r = "Hello".to_string(); // 通过 r 修改 s1
​
r = &mut s2; // 更改 r 的指向
​
*r = "World".to_string(); // 通过 r 修改 s2
​
println!("{} {}", s1, s2);
​
// 输出:Hello World

总的来说: mut 修饰的内存可被修改

参考

对于Rust中的可变性(mut 关键字)的理解
参考URL: https://zhuanlan.zhihu.com/p/365783339

Rust之和mut、mut相关推荐

  1. 大火系列: Rust入门篇 mut

    Rust入门篇 &mut Hello World 使用 cargo new projectName --bin 创建一个工程 cargo build 和 cargo run命令 cargo配置 ...

  2. Rust入门篇 mut

    Rust入门篇 (1) Rust入门篇 声明: 本文是在参考 The Rust Programming Language 和 Rust官方教程 中文版 写的. 个人学习用 再PS. 目录这东东果然是必 ...

  3. Rust中mut, , mut的区别

    资源:内存区块.不同的内存区块位置和大小就是不同的资源. str let a = "xxx".to_string(); 含义:a绑定到字符串资源A上,拥有资源A的所有权 let m ...

  4. 里rust怎么找蓝图_Rust错误处理

    错误处理是程序开发中必不可少的一个环节,在Rust中,错误分成两个类别:可恢复错误和不可恢复错误. 可恢复错误:比如说未找到文件,Rust中用Result<T,E>来实现 不可恢复错误:比 ...

  5. c++ enum 给定类型_在 Rust 中创建 C/C++ API

    Rust 是一种神奇的语言,有着更好的生态系统.许多 Rust 的设计决策都非常适合向现有的C/C++系统添加新功能,或者逐步替换这些系统的部分! 当我尝试为 Rust 创建 C++ API 时,我发 ...

  6. 使用Rust开发操作系统(UEFI基本介绍)

    UEFI基本介绍 关于UEFI BIOS UEFI介绍 引导管理 UEFI Image UEFI 应用程序 OS Loader UEFI运行时服务 调用约定 调用约定的数据类型 IA-32架构调用约定 ...

  7. 深入RUST标准库内核(六)—Iterator

    本书github链接: inside-rust-std-library 本书前面章节: 深入RUST标准库内核(序言) 深入RUST标准库内核(一)概述 深入RUST标准库内核(二)内存 深入RUST ...

  8. 没有 Nginx 的未来,Cloudflare 工程师正在用 Rust 重构代码!

    [CSDN 编者按]你最常用的开发语言是哪种呢?近日,一位专注于 Linux 性能和开源自动化基准测试的软件工程师 Michael Larabel 在一篇文章中表示,在 Cloudflare,他们正在 ...

  9. Rust 优劣势: v.s. C++ / v.s. Go(持续更新)

    Rust 发展速度比 C++ 强很多.如果去翻 open-std 的故纸堆,会发现 C++ 这边有很多人(包括标准委员会的人)提了有用的提案,但后来大多不了了之或经历了非常长的时间才进入标准. > ...

最新文章

  1. 自律到极致-人生才精致「第7期」:领奖通知
  2. register_chrdev深入分析
  3. java有参和无参的用处_Java对比有参数和无参数
  4. Xamarin Live Player Preview 2: 连续运行和调试应用程序
  5. python -- 计算 平方、乘方、平方根_从零开始学习PYTHON3讲义(二)把Python当做计算器...
  6. “约见”面试官系列之常见面试题第三十七篇之CSS3新属性(建议收藏)
  7. ROS 常用命令字典
  8. 洛谷 - P3935 - Calculating - 整除分块
  9. iphonex价格_iPhone X竟然可以换LCD屏幕,价格只要一半
  10. Spring-ConfigurationClassPostProcessor类
  11. android分享文字到朋友圈,微信,分享朋友圈,只能分享图,文字带不过来,这是什么原因?是BUG吗?...
  12. python快速编程入门黑马程序员pdf_Python快速编程入门 传智播客 黑马程序员 python编程从入门到实践基础视频教程核心编程爬虫数据分析程序设计机器学习简明书籍...
  13. MIL图像处理那些事:MIL的安装和MIL工具箱
  14. 如何让电脑的开机速度变快?
  15. Makefile--如何将当前文件下的所有*.cpp文件与*.c文件全部生成相应的可执行文件
  16. RH236介绍红帽GLUSTER存储
  17. php smarty 模版引擎,php模板引擎Smarty入门 - 小俊学习网
  18. HDOJ 1846 Brave Game(巴士博弈)
  19. ffmpeg 音乐循环_自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏
  20. 网页端 vue项目 css美化右侧 Y轴滚动条

热门文章

  1. 敏捷团队建设︱如何组建和管理高效的自组织团队
  2. IOS IAP APP内支付 Java服务端代码
  3. 关于UNITY3d摄像机跟随人物转动的脚本
  4. JavaWeb项目开发案例精粹-第6章报价管理系统-07View层
  5. html仿短信聊天,前端开发JS模仿手机短信发送
  6. L1-057 PTA使我精神焕发 (5 分) 天梯赛 详解
  7. 显著性检测—谱残差方法分析与实现
  8. 牛客每日练习----一个背包问题,判断奥运年,沃老师学生的成绩
  9. 2017 9 25翁凯html学习记录
  10. R语言统计与分析第六周总结