C++与Rust变量声明的比较
文档列表见:Rust 移动端跨平台复杂图形渲染项目开发系列总结(目录)
对于变量声明,Rust默认不可变,需显式加mut关键字才可变。C/C++默认可变,不可变需加const关键字。严格意义上,Rust的let语法属于绑定,和C++的变量声明存在很大区别。 为了降低从C++转Rust的学习难度,有些知识点可以先套用,有更多了解后再深究。
C++示例:
int index = 100;
index = 200; // 编译运行正常
复制代码
Rust示例:
let index = 100;
index = 200; // 编译报错
/********************************************/
// mut表示声明一个可变绑定,之后active_index绑定新值
let mut active_index = 20;
active_index = 30; // 编译运行正常// 加mut才允许后面向matched_names绑定的Vector继续添加元素,否则编译报错
let mut matched_names = Vec::new();
matched_names.push("Mike");
matched_names.push("Michael");
matched_names.push("Jack");{// let的另一种用法:重新绑定,// 允许同一个代码块(block)中存在相同名称的绑定,// 后面的绑定表达式自动遮蔽(Shadowing)前面的同名绑定,// 下面代码是合法的let object = String::from("hello");println!("{}", object);let object = 1000_000_u32;println!("{}", object);
}
复制代码
C++与Rust变量声明的比较相关推荐
- Go 学习笔记(70)— Go 变量声明、变量初始化、值类型变量赋值、指针类型变量赋值
1. 变量声明 要单纯声明一个变量,可以通过 var 关键字,如下所示: var s string 该示例只是声明了一个变量 s,类型为 string,并没有对它进行初始化,所以它的值为 string ...
- Go 学习笔记(26)— Go 习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)
1. 多值赋值 可以一次性声明多个变量,并可以在声明时赋值,而且可以省略类型,但必须遵守一定的规则要求. package main import "fmt"func main() ...
- Go 学习笔记(6)— 变量定义、变量声明、变量作用域
1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...
- javascript变量声明 及作用域
javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...
- 变量声明和定义的区别
转自:http://www.cnblogs.com/GavinDai/archive/2011/10/24/2222735.html 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候 ...
- 函数声明和变量声明提升
var a; // 声明一个变量,标识符为a function a() { // 声明一个函数,标示符也为a } alert(typeof a); 显示的是"function",即 ...
- 谈javascript变量声明
本文同时发表在另一独立博客上http://qingbob.com/blog/%E8%B0%88javascript%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E 这篇文章还是 ...
- C++ Primer 5th笔记(2)chapter 2变量和基本类型:变量声明、关键字
0. 几个零星知识点 . 嵌套作用域:局部变量会覆盖全局变量 . char 在有些机器有符号,有的无符号. . 标识符大小写敏感. 1.变量声明和定义 c++ 将声明和定义分开来. 声明 extern ...
- java 成员变量声明顺序_C++核心准则讨论:按照成员声明的顺序定义和初始化成员变量...
Discussion: Define and initialize member variables in the order of member declaration 讨论:按照成员声明的顺序定义 ...
最新文章
- R----plotly包介绍学习
- testng入门_单元测试
- CSS概念,引入,选择器
- discuz二次开发笔记(一)------$_G全解析,discuz_g_PHP教程
- 程序员要常做好的几件事
- 初学者python笔记(类的装饰器、property方法、元类)
- 1.6 开发集合测试集的大小
- Devpress.XtraGrid.GridControl.GridView属性
- 基于vue+node的校园交流平台
- java协程处理IO_并发编程 --进、线程池、协程、IO模型
- 上银驱动器使用手册_禾川伺服驱动器说明书
- C#解压zip和rar文件
- Android科大讯飞TTS语音合成实例详细步骤
- 29.【Axure 10 】软件母版功能区域
- php汉字转换拼音,php中怎么将中文转换拼音
- Greek Gods,Roman Gods and Chinese Gods
- vue 管理系统顶部tags浏览历史实现
- 意外险、医疗险、重疾险、寿险的主要保障功能和提示
- iOS OC 计算代码执行耗时
- 转载-Android EventLog含义
热门文章
- linux_network
- [原创][Windows] Win7安装visual c++ 2015 redistributable x64失败
- 【安装配置】克隆方式安装Oracle数据库软件
- Vue插槽(solt)简单案例
- Java练习 SDUT-3338_计算各种图形的周长(接口与多态)
- springboot + shiro之登录人数限制、登录判断重定向、session时间设置
- tp中url地址大小写问题
- PHP第三方登录—OAuth2.0协议
- POJ 1080 Human Gene Functions(DP:LCS)
- Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容...