rust学习笔记(2)
类型
有符号整数(signed integers):i8、i16、i32、i64、i128 和 isize(指针宽度)
无符号整数(unsigned integers): u8、u16、u32、u64、u128 和 usize(指针宽度)
浮点数(floating point): f32、f64
char(字符):单个 Unicode 字符,如 'a','α' 和 '∞'(每个都是 4 字节)
bool(布尔型):只能是 true 或 false
单元类型(unit type):()。其唯一可能的值就是 () 这个空元组
- 类型不可改变
- 类型可能根据上下文内容推导出来
数字类型
可以在数字中添加下划线, 例如 1_000
元组
使用 ()
来表示元组, 使用 tuple.0
来访问第一个下标位置
- 元组内部的元素的类型可以不一致, 元组可以嵌套
可以使用解构语法
// 元组可以被解构(deconstruct),从而将值绑定给变量
let tuple = (1, "hello", 4.5, true);
数组
存放的是相同的数据类型, 并且在内存中是连续的
数组的类型标记为 [T; length](译注:T 为元素类型,length 表示数组大小)。
// 定长数组(类型标记是多余的)
let xs: [i32; 5] = [1, 2, 3, 4, 5];
// 所有元素可以初始化成相同的值
let ys: [i32; 500] = [0; 500];
使用
arr[1..2]
实现数组的切片
自定义类型
struct: 定义一个结构体(structure)
enum: 定义一个枚举类型(enumeration)
struct
// 元组结构体
struct Pair(i32, f32);
给自己预先设定的元组一个名字, 同时, 一个有名字的元组的结构需要使用 let Pair(integer, decimal) = pair;
实现
- 结构体支持组合
let _rectangle = Rectangle {
// 结构体的实例化也是一个表达式
top_left: Point { x: left_edge, y: top_edge },
bottom_right: bottom_right,
};
实例化一个结构体
enum
枚举类型的自定义对象可以通过 ::
来获取(可以携带参数等)
别名
别名使用 type Operations = VeryVerboseEnumOfThingsToDoWithNumbers;
创建
// 创建一个 `enum`(枚举)来对 web 事件分类。注意变量名和类型共同指定了 `enum`
// 取值的种类:`PageLoad` 不等于 `PageUnload`,`KeyPress(char)` 不等于
// `Paste(String)`。各个取值不同,互相独立。
enum WebEvent {
// 一个 `enum` 可以是单元结构体(称为 `unit-like` 或 `unit`),
PageLoad,
PageUnload,
// 或者一个元组结构体,
KeyPress(char),
Paste(String),
// 或者一个普通的结构体。
Click { x: i64, y: i64 }
}
use
使用 use
方便开发的时候少写一些内容
// 显式地 `use` 各个名称使他们直接可用,而不需要指定它们来自 `Status`。
use Status::{Poor, Rich};
// 自动地 `use` `Work` 内部的各个名称。
use Work::*;
常量
// 全局变量是在所有其他作用域之外声明的。
static LANGUAGE: &'static str = "Rust";
const THRESHOLD: i32 = 10;
rust学习笔记(2)的更多相关文章
- Rust学习笔记1
这是一份不错的rust教程,目前包括4个block和4个project.全部完成后可以用rust实现一个简单的key-value存储引擎. 注意:Windows下rust貌似会遇到一些bug,强烈建议 ...
- Rust学习笔记一 数据类型
写在前面 我也不是什么特别厉害的大牛,学历也很低,只是对一些新语言比较感兴趣,接触过的语言不算多也不算少,大部分也都浅尝辄止,所以理解上可能会有一些偏差. 自学了Java.Kotlin.Python. ...
- Rust学习笔记2
继续继续... 转眼都开学啦... Building Blocks 2 building blocks里讲了一些关于Log structure storage的东西,这也是用于在硬盘上持久化KvSto ...
- Rust学习之旅(读书笔记):枚举 (Enum)
Rust学习之旅(读书笔记):枚举 (Enum) C 语言的枚举类型很弱,不如后来的语言,也不如之前的语言.在 C 语言里面枚举量就是一个名字,更方便的定义常量.今天读了<The Rust Pr ...
- 《Rust权威指南》学习笔记——4. 认识所有权
Rust权威指南学习笔记--认识所有权 什么是所有权 1. 所有权规则 Rust中的每一个值都有一个对应的变量作为它的所有者. 在同一时间内,值有且仅有一个所有者. 当所有者离开自己的作用域时,它持有 ...
- Rust 学习之旅(7):Package,Crate,Module
Rust 学习之旅(7):Package,Crate,Module 这是第 7 章的读书笔记,Cargo Workspace 在第 14 章. Packages and Crates As a pro ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- 转载 Netty tls验证
https://blog.csdn.net/luo15242208310/article/details/108215019 目录Java ssl单向TLSServer端Client端双向TLSser ...
- H2数据UNIX_TIMESTAMP兼容问题
开篇 今天某同事在spring结合H2实现mybatis DAO层单测的时候遇到一个问题,本着人道主义临时支持下我司大xx业务,就帮忙一起看了下,回想一下整个过程还是挺有意思的,就顺便写了这篇文章来 ...
- 关于TB交易开拓者的KDJ指标与经典KDJ指标计算方法不同的分析
我之前在群里咨询的问题, TB官方的技术大佬,给出详细的分析 原链接:https://www.kdocs.cn/l/cgF3sA7ypa99 在这,我只复制最核心的内容,如果需要深入研究, 请联系我, ...
- Unity 3D更换默认脚本编辑器VisualStudio
由于VisualStudio 30天试用到期了,所有不能编辑Unity 3D脚本.需要更换成Notepad++ 打开Unity 3D顶部菜单 点击编辑(Editor)->Preferences- ...
- Qt编写安防视频监控系统37-onvif预置位
一.前言 预置位在视频监控系统中是不可或缺的存在,响应预置位功能的前提是要带预置位的云台球机,有些普通的云台球机其实不带预置位的,这个要检查清楚,硬件上不支持该功能的,你再怎么点也没反应.在这个视频监 ...
- [转]CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS、LDFLAGS、LD_LIBRARY_PATH区别
CFLAGS.CXXFLAGS.FFLAGS.FCFLAGS.LDFLAGS.LD_LIBRARY_PATH区别 Linux笔记之LD_LIBRARY_PATH详解 翻译 搜索 复制
- 微信小游戏直播在Android端的跨进程渲染推流实践
本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...
- 1. C++快速入门--变量和基本类型, 类别
文章使用obsidian编写, 双链部分可能失效 1 基本内置类型 1.1 算术类型 算术类型介绍 bool 类型 字符类型 整数类型 实数浮点.虚数浮点和 复数浮点 参看如下表 带符号和无符号类型的 ...
- Python依赖库的导入、导出 | 解决内网安装模块问题 | Python
通过在有网的机器A下下载所有的依赖包至package文件夹下: pip3 download -r requirements.txt -d ./package 将依赖包移动至没有网的机器B下,指定依赖包 ...
- uwp 多语言和本地化
1. 在项目根目录创建Strings文件夹,再Strings文件夹创建需要的语言名子目录,再添加资源文件Resources.resw,目录构如: Strings\en-US\Resources.res ...