第一章 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 ...
随机推荐
- EX6新增的字符串
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- nginx+vite 项目打包及部署到服务器二级路由
项目打包及部署到服务器二级路由 例如:我希望将打包的项目部署到 http://localhost:8088/web/ 上 一. 项目配置及打包 项目部署到服务器二级路由需要配置基础路径base,即需要 ...
- kubernetes 安装cilium
kubernetes 安装cilium Cilium介绍 Cilium是一个开源软件,用于透明地提供和保护使用Kubernetes,Docker和Mesos等Linux容器管理平台部署的应用程序服务之 ...
- docker方式实现postgres数据持久化离线安装
保存镜像 root@hello:~# docker pull postgres Using default tag: latest latest: Pulling from library/postg ...
- windows通过修改注册表来修改暂停更新时间
但通过修改注册表,我们可以将这个天数修改成自己期望的,比如10年. 在小娜或者运行中输入 regedit 打开注册表编辑器,展开至 HKEY_LOCAL_MACHINE\SOFTWARE\Micros ...
- 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)
一.创建ASP.NET Core Web API项目(若项目已创建,则可跳过本节内容) 1.双击打开VS2022. 2.单击"创建新项目",如下图. 3.选择"ASP.N ...
- android studio 做登陆界面
先来一个最简单的 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> &l ...
- Linux中如何通过yum或者apt下载安装MySQL
一. yum mysql5.7以下 mysql5.7以上 Centos8 可以,但是需要重新配置文件 可以,但是需要重新配置文件 可以,但是需要重新配置文件 Centos7 可以直接yum,但是是 ...
- count(*) count(1) count(字段)效率问题
COUNT(字段名)和COUNT(*)的查询结果有什么不同? COUNT(1)和COUNT(*)之间的效率哪个更高? 你知道答案吗?很多人都认为COUNT(1)比COUNT(*)效率高,真的是这样吗? ...
- 明修"栈"道——越过Android启动栈陷阱
作者:vivo 互联网大前端团队- Zhao Kaiping 本文从一例业务中遇到的问题出发,以FLAG_ACTIVITY_NEW_TASK这一flag作为切入点,带大家探究Activity启动前的一 ...