Rust语言开发基础(六)基础语法
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语言开发基础(六)基础语法相关推荐
- L1D1:嵌入式Linux C语言开发工具及基础命令
嵌入式Linux C语言开发工具及基础命令 一.ubuntu环境搭建 请自行准备VMware workstation15安装包 及 ubuntu18.04.iso镜像文件.可参考链接:VMware W ...
- rust做嵌入式开发_Redox:一款纯用Rust语言开发的操作系统
Redox:一款用Rust语言开发的操作系统 汪明军 崔广章 译 Redox是纯用rust实现的通用操作系统.目标是提供一个功能完整的类Unix微内核,既安全又是免费的.Redox操作系统兼容POSI ...
- cs架构用什么语言开发_用Rust语言开发微信小程序
由于stdweb已经好久没有更新了,本人又写了另外一篇: JiaYe:用Rust语言开发微信小程序:wasm-bindgenzhuanlan.zhihu.com stdweb可以轻松将Rust代码编 ...
- Rust语言开发基础(八)Rust的接口及其实现
2019独角兽企业重金招聘Python工程师标准>>> trait(特征)类似于其他语言中的interface或者protocol,指定一个实际类型必须满足的功能集合 一.如何理解t ...
- 使用 Rust 语言开发 Erlang NIF
Rustler 项目还不是很成熟, 基本可用. 有兴趣的可以给作者提 Issue. Rustler 是一个在安全的用 Rust 编写 Erlang NIF 的库. 这里安全的含义是, 它不会导致 BE ...
- Rust语言开发环境搭建详细教程
目录 一.Rust简介 1.rust历史 2.rust吉祥物 二.Rust开发环境搭建 1.C++环境安装 2.Rust下载 3.rust安装 4.rust环境检测 查看rust版本 查看cargo版 ...
- 嵌入式linux之go语言开发(六)几行代码实现终端的远程日志诊断
日志是应用的镜子,可以发现应用中的问题,重要性不言而喻. 以往设备有问题了,是如何诊断的?我们是现场人员到现场,又是配合抓包,又是配合提供机器日志,效率极其低下. 如今都物联网时代了,能让数据跑路的还 ...
- 用 C 语言开发一门编程语言 — 字符串与文件加载
目录 文章目录 目录 前文列表 字符串 读取字符串 注释 文件加载函数 命令行参数 打印函数 报错函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C ...
- Rust语言- 元组 ( tuple )
文章目录 Rust 元组 ( tuple ) 元组是一个 复合类型 输出元组中的所有元素 访问元组中的单个元素 参考 Rust 元组 ( tuple ) Rust 中的结构体(Struct)与元组(T ...
最新文章
- 线程池的几个重要参数?—— 七大参数
- Linux操作系统安装---centos6.7安装图文实例详解(完整版)
- Caffe常用层参数介绍
- 求你了,别再用 print 调试代码了
- 亚马逊创始人下月将乘自家火箭进入太空 亲弟弟同行
- 作为一个女程序员,有感而发
- 入门系列之在Ubuntu上使用MySQL设置远程数据库优化站点性能
- iOS APP产品流水线----- 模块化开发及组件化模块化的讨论(解耦、面向接口调用、面向页面调用、封装SDK)
- Missing Push Notification Entitlement警告-----以及解决方法
- Unity3d iOS 内购详细流程总汇
- java面试之Servlet/JSP面试题
- 中望cad自定义快捷键命令_[cad常用快捷键命令大全]中望cad常用快捷键及命令
- 解决 VS2008安装过程更改路径的问题
- 微信 多选 照片,进行上传
- python字典题_Python字典练习题
- 民航订票管理系统——jsp+servlet+MySQL [最简单的java web,只需要简单会一点就可以写]
- Android中的网络编程
- 【ROM定制】Android 12 制作『MIUI官改』那点事③工具
- Mac 安装element-ui
- ICPC 沈阳M - United in Stormwind SOSDP+FWT+容斥
热门文章
- 给IIS添加CA证书以支持https
- iPhone开发:通过NSURLRequest获得服务器返回的http header和http status
- SSH 组建轻量级架构 附录 -- 遇到的问题和解答
- 热更新 FrameWork
- iOS UITextField输入框随键盘弹出界面上移
- 011:视图函数介绍
- js获取 浏览器,手机内核
- 5月“.公司”域名注册总量TOP15:西部数码第四
- 面试题6:用两个栈实现队列
- TWAIN Specification Chapter 4 “Advanced Application Implementation”译——应用程序端的高级实现...