前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rust 基础语法(一) -- 变量、运算与注释

Rust 基础语法(一) -- 变量、运算与注释

作者头像
用户3147702
发布2022-06-27 17:06:48
3910
发布2022-06-27 17:06:48
举报

1. 引言

上一篇文章中我们已经用 Rust 运行了 Hello World 程序,那么,接下来我们就来学习一下 Rust 的基础语法。

2. 标准输出

上一篇文章中,我们已经看到了 Rust 标准输出的例子:

代码语言:javascript
复制
fn main() {
    let a = 12;
    println!("a is {}", a);
}

2.1 输出函数

Rust 标准输出函数有两个:

  1. println!()
  2. print!()

两个的区别仅在于是否在末尾加上换行符。

2.2 占位符

上面的例子中,在输出参数中存在一个占位符 {},用来指代后面参数列表中的参数:

代码语言:javascript
复制
println!("a is {}, a again is {}", a, a);

在这个例子中,参数列表中的 a 出现了两次,看起来有些冗余,rust 允许在 {} 中加入数字来进行对参数列表进行索引:

代码语言:javascript
复制
println!("a is {0}, a again is {0}", a);

如何转义占位符,从而能够输出 {} 呢?

代码语言:javascript
复制
println!("{{}}");

这样就会输出:

{}

3. Rust 的变量

3.1 变量

在本文的第一个例子中,我们看到了 let 关键字。它用来声明变量:

代码语言:javascript
复制
let a = 123;

变量 a 在此声明之后,便拥有了类型,但我们并不能更改 a 的值,因为 a 并不是一个可变变量。

如果想让 a 被重新赋值,那么就需要用另一个关键字 mut 将变量标记为可变:

代码语言:javascript
复制
let mut a = 123;
a = 456;

但是要记住,a 是有类型的,即便 a 是可变的,仍然不能为 a 赋予其他类型的值。

3.2 重影

尽管不可变变量不能被重新赋值,但它是可以被重新声明的,通过重新声明可以重新绑定这一变量,从而为变量赋予新的值。

代码语言:javascript
复制
fn main() {
    let a = 123;
    let a = "xyz";
    println!("The value of a is {}", a);
}

例如你可以这样使用重影机制:

代码语言:javascript
复制
fn main() {
    let x = 5;
    let x = x + 1;
    let x = x * 2;
    println!("The value of x is: {}", x);
}

会输出:

The value of x is: 12

4. Rust 数据类型

和其他语言类似,Rust 中数据类型也分为以下几个类型:

  1. 整型
  2. 浮点型
  3. 布尔型
  4. 字符型
  5. 数组类型

4.1 整型

位长度

有符号

无符号

8-bit

i8

u8

16-bit

i16

u16

32-bit

i32

u32

64-bit

i64

u64

128-bit

i128

u128

arch

isize

usize

isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台。

整型数的不同进制的写法有以下几种:

进制

十进制

98_222

十六进制

0xff

八进制

0o77

二进制

0b1111_0000

字节(只能表示 u8 型)

b'A'

可以在变量声明时指定变量类型:

代码语言:javascript
复制
fn main() {
    let x:i32 = 123;
}

4.2 浮点型

浮点型分为 32 位浮点数 f32 和 64 浮点数 f64。

代码语言:javascript
复制
fn main() {
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
}

4.3 布尔型

布尔型有两个取值:

  • true
  • false

4.4 字符型

Rust 中的字符型用 char 表示,大小为 4 字节,中文字符串则强制使用 UTF-8 编码。

4.5 数组与元组

与其他语言非常类似,数组和元组就是一组数据的集合。

  • 需要注意的是,rust 中的数组和元组的元素都是不可变的,也就是说声明后不能更新数组或元组中的某个元素。

1. 元组

元组是通过一堆括号包括的一组数据,可以拥有不同的数据类型:

代码语言:javascript
复制
let tup: (i32, f64, u8) = (500, 6.4, 1);
// tup.0 等于 500
// tup.1 等于 6.4
// tup.2 等于 1
let (x, y, z) = tup;
// y 等于 6.4

2. 数组

数组使用方括号包括的一组数据,这些数据必须是相同类型:

代码语言:javascript
复制
let a = [1, 2, 3, 4, 5];

5. 数学运算

rust 支持基本的数学运算,如:

  • 加:+
  • 减:-
  • 乘:*
  • 除:/
  • 取余:%
  • 赋值数学运算:+=、-= 等
  • Rust 不支持 ++ 与 -- 操作

6. 注释

和许多其他语言一样,Rust 支持下面的三种注释:

代码语言:javascript
复制
// 这是第一种注释方式
代码语言:javascript
复制
/* 这是第二种注释方式 */
代码语言:javascript
复制
/*
 * 多行注释
 * 多行注释
 * 多行注释
 */

除此以外,rust 还有一种特殊的用于说明文档的注释:

代码语言:javascript
复制
/// Adds one to the number given.
///
/// # Examples
///
/// ```
/// let x = add(1, 2);
///
/// ```

fn add(a: i32, b: i32) -> i32 {
    return a + b;
}
   
fn main() {
    println!("{}",add(2,3));
}

Cargo 的 cargo doc 功能可以自动将文档书名注释变成 html 格式的说明文档。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 引言
  • 2. 标准输出
    • 2.1 输出函数
      • 2.2 占位符
      • 3. Rust 的变量
        • 3.1 变量
          • 3.2 重影
          • 4. Rust 数据类型
            • 4.1 整型
              • 4.2 浮点型
                • 4.3 布尔型
                  • 4.4 字符型
                    • 4.5 数组与元组
                      • 1. 元组
                      • 2. 数组
                  • 5. 数学运算
                  • 6. 注释
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档