第一章 Rust基本知识 -- tour of rust
第一章 基础知识
将探讨函数、变量和最基本的类型等基本知识。
变量
变量使用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的更多相关文章
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- apue学习笔记(第一章UNIX基础知识)
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...
- HTML5 Canvas核心技术图形动画与游戏开发(读书笔记)----第一章,基础知识
一,canvas元素 1 为了防止浏览器不支持canvas元素,我们设置“后备内容”(fallback content),下面紫色的字即为后备内容 <canvas id="canvas ...
- MongDB篇,第一章:数据库知识2
MongDB 数据库知识2 非关系型数据库和关系型数据库的比较1. 不是以关系模型构建数据结构,结构比较自由 不保证数据的一致性2. 非关系型数据库弥补了关系型数据库的一些不足,能 够在处理高并 ...
- 第一章 UNIX 基础知识
1.1 Unix体系结构 OS定义为一种软件,它控制计算机硬件资源,提供程序运行环境,一般称其为内核(kernel),它体积小,位于环境中心. 内核的接口为系统调用(system call),共用函数 ...
- Python 学习系列----第一章:基础知识
1.1 常量-----不能改变它的值 1.2 数 在Python 中数可以分为整数.浮点数和复数. PS:在Python中不用区分'long int'类型.默认的整数类型可以任意长.(译者注:长度应该 ...
- MongDB篇,第一章:数据库知识1
MongDB 数据库知识1 程序 = 数据结构 + 算法 数据存储阶段 1,文件管理阶段 (.txt .doc .xls) 优点: 数据可以长期保存:可以存储大量的数据:使用简单 缺点 ...
- MySQL篇,第一章:数据库知识1
MySQL 数据库 1 一.MySQL概述 1.什么是数据库 数据库是一个存储数据的仓库 2.哪些公司在用数据库 金融机构.购物网站.游戏网站.论坛网站... ... 3.提供 ...
- 《Python基础教程》第一章:基础知识
如果希望只执行普通的除法,可以在程序前加上以下语句:from __future__ import division.还有另外一个方法,如果通过命令行运行Python, 可以使用命令开关-Qnew.此时 ...
- 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识
1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...
随机推荐
- 从pcap文件中提取pcma音频
操作系统 :Windows10_x64 .CentOS 7.6.1810_x64 wireshark版本:3.6.12 Python 版本 : 3.9.12 一.背景描述 工作中有时候会遇到需要从 ...
- 你绝对没想到的GPT的底层意义
学会说话才是完整的人 有种说法在民间流传已久,在某些非洲部落中,孩子出生后往往会被称作"小人"或者"半个人",直到他们能够进行语言的交流才被认为是完全的人.这是 ...
- GitLab服务器傻瓜式搭建教程
开始前的准备 需要有一台Linux系统的服务器或虚拟机 QAQ 安装包下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ 注* 本教程无需下载安装 ...
- [Linux]常用命令之【hostname】
1: 个人的片面理解: hostname是主机名(的"昵称"),而非域名.一般设置hostname,来标识当前机器的主要用途.以区别与其它机器 2: hostname的严格定义: ...
- [Java]枚举类型:遍历为List
方式1 Demo import com.google.common.collect.Lists; import java.util.HashMap; import java.util.List; im ...
- 【Diary】CSP-S2 2021 游记 & NOIP 备赛发疯日记
Day 0 两个极端的回跳. .....不行啊. 我快输不起了........... ------------------------------- 早上被生物钟强行唤醒,逼自己懒床到6:40. 弹琴 ...
- DVWA上low级别反射型,存储型,DOM型XSS攻击获取用户cookie
1.什么是反射型 XSS 攻击? 反射型 XSS 是指应用程序通过 Web 请求获取不可信赖的数据,并在未检验数据是否存在恶意代码的情况下,将其发送给用户. 反射型 XSS 一般可以由攻击者构造带有恶 ...
- MySQL主从复制原理剖析与应用实践
vivo 互联网服务器团队- Shang Yongxing MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上, ...
- v-if与v-show造成部分元素丢失的问题——v-if复用元素问题
pre { overflow-y: auto; max-height: 400px } img { max-width: 500px; max-height: 300px } 问题描述 在写tab切换 ...
- odoo 开发入门教程系列-模块交互
模块交互 在上一章中,我们使用继承来修改模块的行为.在我们的房地产场景中,我们希望更进一步,能够为客户生成发票.Odoo提供了一个开发票模块,因此直接从我们的房地产模块创建发票是很简单的,也就是说,一 ...