2019独角兽企业重金招聘Python工程师标准>>>

一、变量的定义和使用

其它常见的编程语言对变量的定义通常是通过声明类型和使用关键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; }

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

转载于:https://my.oschina.net/pagecorrect/blog/639047

Rust语言开发基础(六)基础语法相关推荐

  1. L1D1:嵌入式Linux C语言开发工具及基础命令

    嵌入式Linux C语言开发工具及基础命令 一.ubuntu环境搭建 请自行准备VMware workstation15安装包 及 ubuntu18.04.iso镜像文件.可参考链接:VMware W ...

  2. rust做嵌入式开发_Redox:一款纯用Rust语言开发的操作系统

    Redox:一款用Rust语言开发的操作系统 汪明军 崔广章 译 Redox是纯用rust实现的通用操作系统.目标是提供一个功能完整的类Unix微内核,既安全又是免费的.Redox操作系统兼容POSI ...

  3. cs架构用什么语言开发_用Rust语言开发微信小程序

    由于stdweb已经好久没有更新了,本人又写了另外一篇: JiaYe:用Rust语言开发微信小程序:wasm-bindgen​zhuanlan.zhihu.com stdweb可以轻松将Rust代码编 ...

  4. Rust语言开发基础(八)Rust的接口及其实现

    2019独角兽企业重金招聘Python工程师标准>>> trait(特征)类似于其他语言中的interface或者protocol,指定一个实际类型必须满足的功能集合 一.如何理解t ...

  5. 使用 Rust 语言开发 Erlang NIF

    Rustler 项目还不是很成熟, 基本可用. 有兴趣的可以给作者提 Issue. Rustler 是一个在安全的用 Rust 编写 Erlang NIF 的库. 这里安全的含义是, 它不会导致 BE ...

  6. Rust语言开发环境搭建详细教程

    目录 一.Rust简介 1.rust历史 2.rust吉祥物 二.Rust开发环境搭建 1.C++环境安装 2.Rust下载 3.rust安装 4.rust环境检测 查看rust版本 查看cargo版 ...

  7. 嵌入式linux之go语言开发(六)几行代码实现终端的远程日志诊断

    日志是应用的镜子,可以发现应用中的问题,重要性不言而喻. 以往设备有问题了,是如何诊断的?我们是现场人员到现场,又是配合抓包,又是配合提供机器日志,效率极其低下. 如今都物联网时代了,能让数据跑路的还 ...

  8. 用 C 语言开发一门编程语言 — 字符串与文件加载

    目录 文章目录 目录 前文列表 字符串 读取字符串 注释 文件加载函数 命令行参数 打印函数 报错函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C ...

  9. Rust语言- 元组 ( tuple )

    文章目录 Rust 元组 ( tuple ) 元组是一个 复合类型 输出元组中的所有元素 访问元组中的单个元素 参考 Rust 元组 ( tuple ) Rust 中的结构体(Struct)与元组(T ...

最新文章

  1. 线程池的几个重要参数?—— 七大参数
  2. Linux操作系统安装---centos6.7安装图文实例详解(完整版)
  3. Caffe常用层参数介绍
  4. 求你了,别再用 print 调试代码了
  5. 亚马逊创始人下月将乘自家火箭进入太空 亲弟弟同行
  6. 作为一个女程序员,有感而发
  7. 入门系列之在Ubuntu上使用MySQL设置远程数据库优化站点性能
  8. iOS APP产品流水线----- 模块化开发及组件化模块化的讨论(解耦、面向接口调用、面向页面调用、封装SDK)
  9. Missing Push Notification Entitlement警告-----以及解决方法
  10. Unity3d iOS 内购详细流程总汇
  11. java面试之Servlet/JSP面试题
  12. 中望cad自定义快捷键命令_[cad常用快捷键命令大全]中望cad常用快捷键及命令
  13. 解决 VS2008安装过程更改路径的问题
  14. 微信 多选 照片,进行上传
  15. python字典题_Python字典练习题
  16. 民航订票管理系统——jsp+servlet+MySQL [最简单的java web,只需要简单会一点就可以写]
  17. Android中的网络编程
  18. 【ROM定制】Android 12 制作『MIUI官改』那点事③工具
  19. Mac 安装element-ui
  20. ICPC 沈阳M - United in Stormwind SOSDP+FWT+容斥

热门文章

  1. 给IIS添加CA证书以支持https
  2. iPhone开发:通过NSURLRequest获得服务器返回的http header和http status
  3. SSH 组建轻量级架构 附录 -- 遇到的问题和解答
  4. 热更新 FrameWork
  5. iOS UITextField输入框随键盘弹出界面上移
  6. 011:视图函数介绍
  7. js获取 浏览器,手机内核
  8. 5月“.公司”域名注册总量TOP15:西部数码第四
  9. 面试题6:用两个栈实现队列
  10. TWAIN Specification Chapter 4 “Advanced Application Implementation”译——应用程序端的高级实现...