第一章 基础知识

将探讨函数、变量和最基本的类型等基本知识。

变量

变量使用let关键字来声明。

在赋值时,Rust能够在99%的情况下推断变量类型。如果不能,也可以将类型添加到变量声明中。

注意 如果多次分配相同的变量名的方式,这被称为变量隐藏。可以更改变量类型以实现对该变量名的后续使用。

变量名总是遵循蛇形命名法

let x = 13;
println!("{}", x); let x: f64 = 3.14159;
println!("{}",x); let x;
x = 0;
println!("{}", x);

修改变量

Rust非常关心那些变量时可修改的,值分为两种类型:

  • 可变的 - 编译器允许对变量进行读取和写入

  • 不可变的- 编译器只允许对变量进行读取。

可变值用mut 关键字表示

1 let mut x = 42;
2 println!("{}", x);
3 x = 13;
4 println!("{}", x);

基本类型

Rust有多种常见的类型:

  • 布尔类型-bool 表示true或false

  • 无符号整型- u8, u32, u64, u128表示正整数

  • 有符号整型- i8, i32, i64, i128表示正负整数

  • 指针大小的整数- usize, isize 表示内存中内容的索引和大小

  • 浮点数- f32 f64

  • 元组 tuple - (value, value, ...) 用于在栈上传递固定序列的值

  • 数组- 在编译时已知的具有固定长度的相同元素的集合

  • 切片 slice 在运行时已知长度的相同元素的集合

  • Str (string slice) - 在运行时已知长度的文本

可以通过将类型附加到数字的末尾来明确指定数字类型(13u32, 2u8)

 1 let x = 12;
2 let a = 12u8;
3 let b = 4.3;
4 let c = 4.3f32;
5 let bv = true;
6 let t = (13, false);
7 let sentence = "hello world!";
8 println!("{} {} {} {} {} {} {} {}",
9 x, a, b, c, bv, t.0, t.1, sentence
10 );

基本类型转换

as 关键字,Rust使数字类型转换非常容易

let a = 13u8;
let b = 7u32;
let c = a as u32 + b;
println!("{}", c); let t = true;
println!("{}", t as u8);

常量

常量允许我们高效地指定一个在代码中会被多次使用的公共值。不会象变量一样在使用的时候会被复制值,常量会在编译期间直接用它们的值来替换文本标识符

不同于变量,常量必须始终具有显式类型。

常量名总是遵循全大写蛇形命名法。

1 const PI: f32 = 3.14158;

数组

数组是所有相同类型数据元素的固定长度集合。

一个数组的数据类型是[T; N], 其中T是元素的类型,N是编译时已知的固定长度。

可以使用 [x]运算符检索单个元素,其中x是所需元素的usize索引。

1 let nums: [i32; 3] = [1, 2, 3];
2 println!("{:?}", nums);
3 println!("{}", nums[1]);

函数

函数有0个或者多个参数。

函数名总是遵循蛇形命名法。

1 fn add(x: i32, y: i32) -> i32 {
2 x + y
3 }

多个返回值

函数可以通过元组来返回多个值。

元组元素可以通过它们的索引来获取。

1 fn swap(x: i23, y: i32) -> (i32, i32) {
2 (y, x)
3 }
4
5 let result = swap(123, 321);
6 println!("{} {}"m result.0, result.1);

第一章 Rust基本知识 -- tour of rust的更多相关文章

  1. UNIX环境高级编程--第一章 UNIX基础知识

    第一章 UNIX基础知识 1.2 UNIX体系结构   从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...

  2. apue学习笔记(第一章UNIX基础知识)

    总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...

  3. HTML5 Canvas核心技术图形动画与游戏开发(读书笔记)----第一章,基础知识

    一,canvas元素 1 为了防止浏览器不支持canvas元素,我们设置“后备内容”(fallback content),下面紫色的字即为后备内容 <canvas id="canvas ...

  4. MongDB篇,第一章:数据库知识2

    MongDB    数据库知识2 非关系型数据库和关系型数据库的比较1. 不是以关系模型构建数据结构,结构比较自由 不保证数据的一致性2. 非关系型数据库弥补了关系型数据库的一些不足,能 够在处理高并 ...

  5. 第一章 UNIX 基础知识

    1.1 Unix体系结构 OS定义为一种软件,它控制计算机硬件资源,提供程序运行环境,一般称其为内核(kernel),它体积小,位于环境中心. 内核的接口为系统调用(system call),共用函数 ...

  6. Python 学习系列----第一章:基础知识

    1.1 常量-----不能改变它的值 1.2 数 在Python 中数可以分为整数.浮点数和复数. PS:在Python中不用区分'long int'类型.默认的整数类型可以任意长.(译者注:长度应该 ...

  7. MongDB篇,第一章:数据库知识1

    MongDB    数据库知识1 程序 =  数据结构 + 算法 数据存储阶段 1,文件管理阶段 (.txt .doc .xls) 优点: 数据可以长期保存:可以存储大量的数据:使用简单     缺点 ...

  8. MySQL篇,第一章:数据库知识1

    MySQL 数据库 1 一.MySQL概述 1.什么是数据库       数据库是一个存储数据的仓库 2.哪些公司在用数据库       金融机构.购物网站.游戏网站.论坛网站... ... 3.提供 ...

  9. 《Python基础教程》第一章:基础知识

    如果希望只执行普通的除法,可以在程序前加上以下语句:from __future__ import division.还有另外一个方法,如果通过命令行运行Python, 可以使用命令开关-Qnew.此时 ...

  10. 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

    1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...

随机推荐

  1. 用ACDSee查看Office文档?No!有中文解决方案吗?暂未发现!

    看图软件选择 用过不少看图软件,20年前就觉得ACDSee实在太好用了,界面漂亮.速度快.格式多.体积小! 后来图像格式越来越丰富,ACDSee版本也越来越新,体积越来越大. 看图软件也越来越繁杂,免 ...

  2. CSS in JS (JSS)

    JSS 是什么 简单来说,一句话概括CSS in JS (JSS),就是"行内样式"(inline style)和"行内脚本"(inline script). ...

  3. 用 Go 剑指 Offer 09. 用两个栈实现队列

    用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,deleteHea ...

  4. 当后端人员未提供接口,前端人员该怎么测试 --mock

    1.回顾 2.线上的mock http://rap2.taobao.org/ https://www.easy-mock.com/ 3.线上接口文档 Swagger https://swagger.i ...

  5. 多台服务器之间配置ssh免密登录

    需求:假设有N台服务器,N台服务器之间都需要配置相互间免密登录 步骤1:在一台服务器上安装ansible yum -y install epel-release &&  yum -y ...

  6. pysimplegui之调试输出(easy_print = Print = eprint)

    "Easy" API 系列中的另一个调用是EasyPrint. 与其他常用的 PySimpleGUI 调用一样,同一个调用还有其他名称.您可以使用Print或eprint除了Eas ...

  7. Pandas的使用

    在数据分析工作中,Pandas 的使用频率是很高的,一方面是因为 Pandas 提供的基础数据结构 DataFrame 与 json 的契合度很高,转换起来很方便.另一方面,如果日常的数据清理工作不是 ...

  8. gradle下载

    gradle下载:https://services.gradle.org/distributions/src.zip源码 .bin.zip安装文件.all.zip源码+安装文件 配置环境变量.

  9. TOF和结构光

    文章目录 TOF和结构光 一.ToF 二.结构光 三.测量距离.分辨率.开发周期的对比 TOF和结构光 一.ToF ToF(Time of Flight)飞行时间 字面理解就是通过光的飞行时间来计算距 ...

  10. Feign踩坑源码分析--@FeignClient注入容器

    一. @EnableFeignClients 1.1.类介绍 从上面注释可以看出是扫描声明了@FeignClient接口的类,还引入了 FeignClientsRegistrar类,从字面意思可以看出 ...