第一章 基础知识

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

变量

变量使用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. 从pcap文件中提取pcma音频

    操作系统 :Windows10_x64 .CentOS 7.6.1810_x64 wireshark版本:3.6.12 Python 版本  :  3.9.12 一.背景描述 工作中有时候会遇到需要从 ...

  2. 你绝对没想到的GPT的底层意义

    学会说话才是完整的人 有种说法在民间流传已久,在某些非洲部落中,孩子出生后往往会被称作"小人"或者"半个人",直到他们能够进行语言的交流才被认为是完全的人.这是 ...

  3. GitLab服务器傻瓜式搭建教程

    开始前的准备 需要有一台Linux系统的服务器或虚拟机 QAQ 安装包下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ 注* 本教程无需下载安装 ...

  4. [Linux]常用命令之【hostname】

    1: 个人的片面理解: hostname是主机名(的"昵称"),而非域名.一般设置hostname,来标识当前机器的主要用途.以区别与其它机器 2: hostname的严格定义: ...

  5. [Java]枚举类型:遍历为List

    方式1 Demo import com.google.common.collect.Lists; import java.util.HashMap; import java.util.List; im ...

  6. 【Diary】CSP-S2 2021 游记 & NOIP 备赛发疯日记

    Day 0 两个极端的回跳. .....不行啊. 我快输不起了........... ------------------------------- 早上被生物钟强行唤醒,逼自己懒床到6:40. 弹琴 ...

  7. DVWA上low级别反射型,存储型,DOM型XSS攻击获取用户cookie

    1.什么是反射型 XSS 攻击? 反射型 XSS 是指应用程序通过 Web 请求获取不可信赖的数据,并在未检验数据是否存在恶意代码的情况下,将其发送给用户. 反射型 XSS 一般可以由攻击者构造带有恶 ...

  8. MySQL主从复制原理剖析与应用实践

    vivo 互联网服务器团队- Shang Yongxing MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上, ...

  9. v-if与v-show造成部分元素丢失的问题——v-if复用元素问题

    pre { overflow-y: auto; max-height: 400px } img { max-width: 500px; max-height: 300px } 问题描述 在写tab切换 ...

  10. odoo 开发入门教程系列-模块交互

    模块交互 在上一章中,我们使用继承来修改模块的行为.在我们的房地产场景中,我们希望更进一步,能够为客户生成发票.Odoo提供了一个开发票模块,因此直接从我们的房地产模块创建发票是很简单的,也就是说,一 ...