Rust 易混淆忘记的基本语法

一个称呼

Rustaceans 可以理解为对 rust 支持的那部分人群,可以看这段英文:

Rustaceans are people who use Rust, contribute to Rust, or are interested in the development of Rust.

直译过来就是:

Rustaceans 是使用、推进、完善、对 rust 感兴趣的人。

good, 我也是其中一员。

命名

Rust 代码中的函数和变量名使用 snake case 规范风格,所有字母都是小写并使用下划线分隔单词:another_function.

表达式

Rust 是一门基于表达式(expression-based)的语言,表达式(Expressions)计算并产生一个值,与你见过的大部分代码行不同,表达式的结尾没有分号,如果在表达式的结尾加上分号,它就变成了语句。

// 这一个表达式,一个代码块,它的值是 4
{
    let x = 3;
    x + 1
}

语句

语句(Statements)是执行一些操作但不返回值的指令,如
let x = (let y = 6) 会报错,与其他语言不同,例如 C 和 Ruby,它们的赋值语句会返回所赋的值,
这些语言中,可以这么写x = y = 6,这样 x 和 y 的值都是 6;

Rust 中不能这样写,let y = 6 语句并不返回值,所以没有可以绑定到 x 上的值。

函数

-> 指明返回类型,不是 :

fn five() -> i32 {
    5
}

函数的返回值等同于函数体最后一个表达式的值, 使用 return 关键字和指定值,可从函数中提前返回,大部分函数隐式的返回最后的表达式, 因此可以省略 return.

流程控制

Rust 代码中最常见的用来控制执行流的结构是 if 表达式和循环,有三种循环:loopwhilefor.

if 表达式

if 是表达式,和其他语言的 if 不一样

    let num =  1;
    // if 和 else 分支的值类型要一样
    // 不然会报错。
    let a = if num > 0 {'T'} else {'F'};

上面 rust 代码,直接把 if 表达式的值赋值给了 a

if 的条件 必须bool 值。如果条件不是 bool 值, 就会报错。

这点让我想到了 PHP if 的痛, PHP 里面的 if 会让一个问题,变成N个问题,比如,在 PHP if 条件里面用了 empty判断某个值,那么当值是 数组、数字0、空字符串、’0’…会返回什么?痛意涌上心头。

循环标签

用于在多个循环之间消除歧义,默认 breakcontinue 应用于此时最内层的循环, 用循环标签可以指定 breakcontinue 生效的地方。

 'out_side: loop {
        let mut num = 0;
        println!("begin");

        loop {
            num += 1;
            if num == 5 {
                println!("break to out_side");
                break 'out_side;
            } else if num > 10 {
                break;
            } else { continue; }
        }
        break;
    }

易忘记是打标签的语法,前面要有个单引号:

 'out_side: loop {
 ...
 }

for

易混淆的是语法

let a = [10, 20, 30, 40, 50];
for element in a {
    println!("the value is: {element}");
}

本作品采用《CC 协议》,转载必须注明作者和本文链接
莫等闲,白了少年头,空悲切
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
36
粉丝
12
喜欢
75
收藏
67
排名:295
访问:3.2 万
私信
所有博文
社区赞助商