Rust之和mut、mut
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相关推荐
- 大火系列: Rust入门篇 mut
Rust入门篇 &mut Hello World 使用 cargo new projectName --bin 创建一个工程 cargo build 和 cargo run命令 cargo配置 ...
- Rust入门篇 mut
Rust入门篇 (1) Rust入门篇 声明: 本文是在参考 The Rust Programming Language 和 Rust官方教程 中文版 写的. 个人学习用 再PS. 目录这东东果然是必 ...
- Rust中mut, , mut的区别
资源:内存区块.不同的内存区块位置和大小就是不同的资源. str let a = "xxx".to_string(); 含义:a绑定到字符串资源A上,拥有资源A的所有权 let m ...
- 里rust怎么找蓝图_Rust错误处理
错误处理是程序开发中必不可少的一个环节,在Rust中,错误分成两个类别:可恢复错误和不可恢复错误. 可恢复错误:比如说未找到文件,Rust中用Result<T,E>来实现 不可恢复错误:比 ...
- c++ enum 给定类型_在 Rust 中创建 C/C++ API
Rust 是一种神奇的语言,有着更好的生态系统.许多 Rust 的设计决策都非常适合向现有的C/C++系统添加新功能,或者逐步替换这些系统的部分! 当我尝试为 Rust 创建 C++ API 时,我发 ...
- 使用Rust开发操作系统(UEFI基本介绍)
UEFI基本介绍 关于UEFI BIOS UEFI介绍 引导管理 UEFI Image UEFI 应用程序 OS Loader UEFI运行时服务 调用约定 调用约定的数据类型 IA-32架构调用约定 ...
- 深入RUST标准库内核(六)—Iterator
本书github链接: inside-rust-std-library 本书前面章节: 深入RUST标准库内核(序言) 深入RUST标准库内核(一)概述 深入RUST标准库内核(二)内存 深入RUST ...
- 没有 Nginx 的未来,Cloudflare 工程师正在用 Rust 重构代码!
[CSDN 编者按]你最常用的开发语言是哪种呢?近日,一位专注于 Linux 性能和开源自动化基准测试的软件工程师 Michael Larabel 在一篇文章中表示,在 Cloudflare,他们正在 ...
- Rust 优劣势: v.s. C++ / v.s. Go(持续更新)
Rust 发展速度比 C++ 强很多.如果去翻 open-std 的故纸堆,会发现 C++ 这边有很多人(包括标准委员会的人)提了有用的提案,但后来大多不了了之或经历了非常长的时间才进入标准. > ...
最新文章
- 自律到极致-人生才精致「第7期」:领奖通知
- register_chrdev深入分析
- java有参和无参的用处_Java对比有参数和无参数
- Xamarin Live Player Preview 2: 连续运行和调试应用程序
- python -- 计算 平方、乘方、平方根_从零开始学习PYTHON3讲义(二)把Python当做计算器...
- “约见”面试官系列之常见面试题第三十七篇之CSS3新属性(建议收藏)
- ROS 常用命令字典
- 洛谷 - P3935 - Calculating - 整除分块
- iphonex价格_iPhone X竟然可以换LCD屏幕,价格只要一半
- Spring-ConfigurationClassPostProcessor类
- android分享文字到朋友圈,微信,分享朋友圈,只能分享图,文字带不过来,这是什么原因?是BUG吗?...
- python快速编程入门黑马程序员pdf_Python快速编程入门 传智播客 黑马程序员 python编程从入门到实践基础视频教程核心编程爬虫数据分析程序设计机器学习简明书籍...
- MIL图像处理那些事:MIL的安装和MIL工具箱
- 如何让电脑的开机速度变快?
- Makefile--如何将当前文件下的所有*.cpp文件与*.c文件全部生成相应的可执行文件
- RH236介绍红帽GLUSTER存储
- php smarty 模版引擎,php模板引擎Smarty入门 - 小俊学习网
- HDOJ 1846 Brave Game(巴士博弈)
- ffmpeg 音乐循环_自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏
- 网页端 vue项目 css美化右侧 Y轴滚动条