Rust个人学习之聊聊Rust的变量

        今天看了Rust的变量相关内容,Rust变量很重要的一个设计点是: Rust变量默认是不可变的。

很难理解? 我们接下来一起研究一下Rust的变量, 在Rust中变量是通过关键字let进行声明的

let x = 5;

上述语句就是定义了一个名称为x的变量,变量的值为5,而这个x是不可变的,当我们尝试去修改的时候会报错,修改代码如下:

fn main() {
    let x = 5;
    println!("x is: {}", x);
    x = 6;  // 类似C语言的变量修改
    println!("x is: {}", x);
}
[root@localhost branches]# vim src/main.rs
[root@localhost branches]# cargo check
    Checking branches v0.1.0 (/root/code/branches)
error[E0384]: cannot assign twice to immutable variable `x`
 --> src/main.rs:4:5
  |
2 |     let x = 5;
  |         -
  |         |
  |         first assignment to `x`
  |         help: consider making this binding mutable: `mut x`
3 |     println!("x is: {}", x);
4 |     x = 6;
  |     ^^^^^ cannot assign twice to immutable variable

For more information about this error, try `rustc --explain E0384`.
error: could not compile `branches` due to previous error

这个设计有点意思,可能是Rust以安全为主要设计目标吧,但是如果我们需要一个可变的变量该如何做呢? Rust提供了另外一个关键字“mut”,代码如下:

fn main() {
    let mut x = 5;  // 定义时添加关键字mut
    println!("x is: {}", x);
    x = 6;
    println!("x is: {}", x);
}

此时再check一次就可以编译通过了。这里还有个问题,当变量不可变时那么与常量有什么区别呢?首先说明一下,在Rust语言中定义常量主要使用关键字const进行定义

const MAX_NUM = 10000;

Rust中常量的名称约定俗成采用全大写字母,单词之间采用下划线进行连接。事实上两者还是有些许差异的:

1、变量定义使用let,常量定义使用const;

2、变量默认是不可变的,添加mut关键字后可变;但是常量是永远不可变的;

3、常量可以在任意作用域中定义,甚至可以是全局;

说完变量,再浅聊一下Rust的数据类型,今天学习到的内容主要有两种数据类型子集:标量类型、复合类型。

标量类型是单个值类型的统称:整数、浮点数、布尔值以及字符

整数包括内容如下:

(注:图片内容摘自《Rust权威指南》)

 在Rust中,浮点型包含两种类型:f32 和 f64,它们分别占用32位和64位空间。Rust默认会将浮点数类型推导为f64。布尔值与其他语言类似,包含了两个可能值:true和false,占据单个字节空间,可以使用bool表示一个布尔类型,最后一个标量类型就是字符类型char,字符类型使用单引号指定

let num = 5
let fl = 5.4
let f:bool = false
let ch:char = 'a'

复合类型包括两种:元组类型、数组

元组跟python中的tuple类似,元素类型可以不一样,但是定义后元素不可修改、不可删除,而数组跟C语言数组用法一致,此处不再展开。

今天就学习了这些内容,整理完成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值