rust学习笔记(2)

news/2025/2/2 17:36:25/文章来源:https://www.cnblogs.com/xuhe2/p/18696748

类型

有符号整数(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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878033.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows安装Mysql-5.7(解压包方式)

1、下载Mysql的安装包下载地址:https://downloads.mysql.com/archives/community/ 注意:官网的下载速度可能很慢,有任务时间要求的须尽快下载,或者使用其他可靠的下载源2、选择对应的版本注意:选择完MySQL的版本后,可以看到下载列表中有两个可以选择,下载名字不带 Debug …

无耳科技 Solon v3.0.7 发布(2025农历新年版)

新一代,面向全场景的 Java 企业级应用开发框架。从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态。采用对商业应用友好的 Apache 2.0 开源协议。Solon 框架! Solon 框架由杭州无耳科技有限公司(下属 Noear 团队)开发并开源。是新一代,面向全场景的 Java 企业…

橡胶 2025年

大周期 C浪结束后 拔起的第一波:节后16900附近计划做到橡胶

【洛谷P1126】机器人搬重物

是搜索play的第四弹! 机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品。机器人的形状是一个直径 \(1.6\) 米的球。在试验阶段,机器人被用于在一个储藏室中搬运货物。储藏室是一个 \(N\times M\) 的网格,有些格子为不可移动的障碍。机器人的中心总是…

数据库安全管理中的权限控制:保护数据资产的关键措施

title: 数据库安全管理中的权限控制:保护数据资产的关键措施 date: 2025/2/2 updated: 2025/2/2 author: cmdragon excerpt: 在信息化迅速发展的今天,数据库作为关键的数据存储和管理中心,已经成为了企业营运和决策的核心所在。然而,伴随着数据规模的不断扩大和数据价值的…

动手学大模型应用开发,第3天:大模型开发流程及架构

一、大模型开发整体流程 1. 何为大模型开发 我们将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。开发大模型相关应用,其技术核心点虽然在大语言模型上,但一般通过调用 API 或开源模型…

Omnissa Horizon 8 2412 (8.14) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件

Omnissa Horizon 8 2412 (8.14) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件Omnissa Horizon 8 2412 (8.14) - 虚拟桌面基础架构 (VDI) 和应用软件 之前称为 VMware Horizon, 通过高效、安全的虚拟桌面交付增强您的工作空间 请访问原文链接:https://sysin.org/blog/omnissa-hor…

VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.21 - 运营商 Kubernetes 解决方案

VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.21 - 运营商 Kubernetes 解决方案VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.21 - 运营商 Kubernetes 解决方案 Kubernetes-based container solution with advanced networking, a private contain…

关于 高精度性能计数器的频率 和 cpu 频率 不一致问题

/* rdtsc指令, 该指令返回CPU自启动以来的时钟周期数;该时钟周期数,即处理器的时间戳。在CPU通电启动后,首先会重置EDX和EAX,在每个时钟周期上升或下降沿到来时,会自动累计周期数,并被记录到EDX和EAX寄存器中,EDX是高位,EAX是低位。rdtsc指令就是从该寄存器中进行获取的…

《操作系统真象还原》第十一章 TSS与用户进程

本文介绍了TSS(Task State Segment)的概念及其在操作系统中的应用。TSS是用于存储任务状态的数据结构,每个任务都有自己的TSS,包含任务切换时需要保存和恢复的信息。Intel建议为每个任务关联一个TSS,CPU通过TR寄存器指向当前任务的TSS,实现任务切换。现代操作系统采用基于…

【渗透测试】Vulnhub GROTESQUE 1.0.1

渗透环境 攻击机: IP: 192.168.10.18(Kali) 靶机: IP:192.168.10.9 靶机下载地址:https://www.vulnhub.com/entry/grotesque-101,658/ 涉及知识点:WordPress扫描(WPScan)、WrodPress反弹shell、Keypass文件解密进行渗透 一、 获取端口信息 nmap或者arp-scan都能…