Rust语言开发基础(六)基础语法

Stella981
• 阅读 679

一、变量的定义和使用

其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust使用关键字let。

1. 变量绑定通过let实现

fn main() {

let x = 5;

}

2. 变量可以是一种模式,自动匹配。

let (x, y) = (1, 2);

3. 支持声明类型

let x: i32 = 5;

4. 变量绑定要求在可以使用它之前必须初始 化。

let x: i32;  //错误,如果没有使用到这个变量,编译的时候是个警告,如果在某个地方使用到就是错误了。

let x: i32 = 10;  //正确,初始化是一个好的习惯

5. 默认变量的值不可改变,如果要改变则使用关键字mut

let mut x = 5; // mut x: i32

x = 10;

6. let开始的是一个语句,而不是表达式

let mut y = 5;

let x = (y = 6); // x has the value `()`, not `6`

二、函数

1.函数即方法,使用关键字fn声明

fn main() {

}

2. 你必须为函数参数声明类型

fn print_number(x: i32) {

println!("x is: {}", x);

}

fn format(name: &str){

println!("match? {}", name);

}

3. 函数返回值及其类型

fn add_one(x: i32) -> i32 {

x + 1

}

注意里面行尾没有分号;如果加上反而报错

4. 使用关键字return的函数

fn foo(x: i32) -> i32 {

return x + 1;

}

这个最常见的返回值方式居然在Rust里不被鼓励,怎么回事

5. 发散函数

fn diverges() -> ! {

panic!("This function never returns!");

}

以它拥有一个类型 ! ,它代表“发散”。一个发散函数可以是任 何类型:

let x: i32 = diverges();

let x: String = diverges();

三、条件语句

条件控制语句中的条件是不需要用小括号()包裹起来

例如  :

if universe::recalibrate() {

return;

}

let x = 5;

if x == 5 {

println!("x is five!");

} else if x == 6 {

println!("x is six!");

} else {

println!("x is not five or six :(");

}

while count < 10 {

println!("count is {}", count);

count += 1;

}

四、循环与迭代

1. loop

let mut x = 10;

loop {

x += 1;

println!("{}", x);

}

2. while

let mut x = 5; // mut x: u32

let mut done = false; // mut done: bool

while !done {

x += x - 3;

println!("{}", x);

if x % 5 == 0 {

done = true;

}

}

4. for

C系的for循环:

for (x = 0; x < 10; x++) {

printf( "%d\n", x );

}

Rust的for循环

使用下面这样的迭代表达式

for var in expression {

code

}

for x in 0..10 {

println!("{}", x); // x: i32

}

记录循环次数

for (i,j) in (5..10).enumerate() {

println!("i = {} and j = {}", i, j);

}

结果:

i = 0 and j = 5

i = 1 and j = 6

i = 2 and j = 7

i = 3 and j = 8

i = 4 and j = 9

即符合如下表达式:

for (linenumber, line) in lines.enumerate() {

println!("{}: {}", linenumber, line);

}

5. 改变循环状态的关键字

即break 和 continue

例如:

let mut x = 5;

loop {

x += x - 3;

println!("{}", x);

if x % 5 == 0 { break; }

其实就基础语法方面的认识,大多数语言都是通用的,可能会稍微增加一下各自语言的特性。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
郜小超 郜小超
3年前
面试问题总结(持续更新中。。。)
1.letconstvar的区别在JavaScript中,有三个关键字可用于声明一个变量,并且每个关键字都有其不同之处。分别var,let和const。一个简单粗暴的解释:使用const关键字声明的变量不能被重新赋值,let而且var可以。也可以这么说:const只可以声明一个常量(js中一旦被定义就无法再被修改的变量,称之为常量)。eg:
晴空闲云 晴空闲云
3年前
javascript实践教程-03-变量
本节目标1.掌握声明变量的方式。2.掌握var和let的区别。内容摘要本篇讲解了变量声明的两种方式var和let,并对比var和let声明变量的差别,最后对变量名名称规则进行了总结。阅读时间1015分钟变量基础js中声明变量可以使用var和let关键词。其中var是es5的语法,let是es6的语法。var声明变量var可以用来声明局部变量和全局变
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Rust学习笔记#2:变量声明、绑定与引用
!(https://oscimg.oschina.net/oscnet/up2a26b061f3ae6214fc3a12b58a2ad0e8433.JPEG)变量声明基础知识Rust中的变量分局部变量和全局变量两种,且必须先声明后使用,常见的声明语法为://声明局部变量,使用let关键字letva
Wesley13 Wesley13
3年前
ES6 简单整理
1.变量声明let和constlet与const都是块级作用域,letfunctionname(){letage12;//age只在name()函数中存在}constconstname'tom'name'jack'//
Stella981 Stella981
3年前
Rust入坑指南:常规套路
搭建好了开发环境之后,就算是正式跳进Rust的坑了,今天我就要开始继续向下挖了。<!more由于我们初来乍到,对Rust还不熟悉,所以我决定先走一遍常规套路。变不变的变量学习一门语言第一个要了解的当然就是变量啦。Rust使用关键字let来定义变量。我们写一个简单的demo!demo1(https://oscim
Wesley13 Wesley13
3年前
ES6的语法
一,定义变量let(类似var)在js一直有一个bug是var:1、var声明的变量会有变量提升console.log(name);//jhonvarname'jhon';2、var没有块级作用域varname2'jjjon';{varname2'tom';