Rust in Action笔记 第三章 复合数据类型

news2025/1/10 16:54:30
  1. 通过#[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI50wIh1-1685693144796)(null)]),不带感叹号的#[allow]仅为下一行代码提供属性,属性有多种分类,文中出现的allow属性称为诊断属性(Diagnostics),详见[诊断属性](https://doc.rust-lang.org/reference/attributes/diagnostics.html#lint-check-attributes);诊断属性还包括warnforbiddeprecatedmust_use`等;
  2. 单位类型(unit type)是一个长度为0的元组(zero-length tuple),用一对小括号()表示,当函数没有返回类型时返回(),或者函数以分号;结尾的时候也是隐式返回了()类型;
  3. 返回值是感叹号!时表示永不返回,感叹号在这里可以看做是Never类型,按时该函数要么永不返回,要么必定会crash;
  4. 3.2使用struct关键字来定义一个复杂的类型,使用了derive关键字来让编译器生成某些属性,出现了vec!宏来快速初始化一个Vec<u8>类型;
  5. 图3.1给出了一个自定义结构的内存分布图,从图中可以看出String类型由3部分组成,第一部分是(ptr)指向堆的指针,第二部分(size)表示大小,即string的长度,第三部分(capacity)表示容量,表示堆上为这个string分配的最大容量,如果后续string继续增大,可能会重新在堆上分配空间,Vec<u8>类型跟String有类似的三个部分;
    3.1
  6. 为一个新的结构起一个名字有两种方式,一种是struct关键字,一种是type关键字,type通常用于为某一种类型起别名(alias),或者在特征trait中制定关联类型(associate type),详见associated-items;
  7. listing 3.3给了一系列文件IO的api,其中String::from_utf8_lossy(&buffer)可以把Vec<u8>类型转换成String类型;
  8. 3.3节阐述了rust与其他语言中类的不同,如图所示,大部分支持继承(inheritance)的语言会把类的方法与成员放在一起,而rust是分开实现的,因而rust的类并不支持面向对象语言的继承属性;3.2
  9. 84页注解简单探讨了一下函数(function)和方法(method)的区别,作者认为函数是纯粹的(pure),它的行为仅由它的参数决定,而方法通常跟类绑定,第一个参数是self或者相应的借用,然而也有例外,例如实现了静态方法(static method)的类的第一个参数就不是self
  10. 3.4节出现了一种用到unsafe关键字的场景,也就是修改静态全局变量的时候必须要用unsafe包裹,避免多个地方同时修改一个全局变量,全局变量根据习惯要全部大写;
  11. constlet的区别,let绑定的对象具有内部可变性,例如std::sync::Arcstd::rc::Rc,通过clone等操作会改变其内部引用计数的值,在编译器的角度来看,let更强调的是为某一块数据起别名(aliasing)而不是它的不可变性(immutability);
  12. 3.4和3.5节主要讲了用enum来处理错误类型,比较简单;
  13. 实现PartialEq特征的类可以用==来进行比较;实现Display特征的类可以在println!中用{}结构化输出,Display特征要求实现fmt(&self, f: &mut fmt::Formatter)方法,实现过程中可以使用write!宏来简化实现过程;
  14. 3.7节讲了类和成员的可见性,默认都是Private,给类加了pub关键字表示该类是public,但是其成员还是private,如果需要成员也是可见的,需要在成员前面加上pub;
  15. 3.8节讲了给代码加文档的方法,///仅为之后的代码作注解,而//!是为整个模块作注解,可以横向比较前面的#![allow]#[allow],生成注解的方式是rustdoc xx.rs,跟之前的cargo doc类似,不过cargo是针对整个项目生成文档;
  16. ///生成的文档支持markdown语法

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

僵尸网络检测数据集CTU-13介绍及使用

首先感谢爱学习的大白菜爱学习的大白菜的博客_CSDN博客-刷题,ACM之路,机器学习领域博主对CTU-13数据集的描述的翻译&#xff0c;这使得后面对这份数据集的理解更加容易。 参考CTU-13数据集_爱学习的大白菜的博客-CSDN博客 由于要做僵尸网络检测的工作&#xff0c;但是没有相关…

权限维持-HOOK-DLL加载

前言 继续来研究关于权限维持的方法&#xff0c;这里希望与各位一起加油。 这里的HOOK其实指的就是Hook PasswordChangeNotify 其中PasswordChangeNotify是一个函数&#xff0c;如果修改的密码符合要求&#xff0c;那么PasswordChangeNotify在系统上同步更新密码&#xff0c;然…

网讯1860网卡网络流控导致网络异常问题

1、背景介绍 目前使用的飞腾平台中采用国产化WX1860千兆网卡芯片&#xff0c;交换芯片采用盛科的CTC8096。示意图如下&#xff1a; 当其中一块飞腾系统异常时&#xff0c;发现整个平台内所有的千兆网均出现异常&#xff0c;任意两个飞腾千兆网均无法ping通。 2、问题排查 一…

什么是边缘计算网关以及什么是边缘计算?

边缘计算 边缘计算是一种分布式计算范例&#xff0c;使计算任务从数据中心或云端移向离数据源更近的地方&#xff0c;即网络的"边缘"。这样做的目的是降低网络延迟&#xff0c;提高数据处理速度&#xff0c;同时减少不必要的数据传输&#xff0c;节省带宽和存储资源。…

如何实现折起来的效果

如何实现范围裁剪和旋转效果。 日常 我还是希望自己的博客能够存在一些温度&#xff0c;而不是冷冰冰的技术分享&#xff0c;我希望留下专属于我自己的个性&#xff0c;就像鸿洋和郭霖的公众号一样。他们会在自己的博客顶端随便写一下最近的新闻什么的&#xff0c;而我不同&a…

msvcr110.dll丢失的解决方法哪种好,推荐这个4种解决方法

Msvcr110.dll是Microsoft Visual Studio 2012的运行时组件之一。这个DLL文件包含一些用于Windows操作系统的C函数库。当程序需要这些函数时&#xff0c;它们会被加载到内存中&#xff0c;以便程序可以使用它们。 当计算机提示“msvcr110.dll丢失”时&#xff0c;可能出现以下影…

基于matlab使用接收机工作特征 (ROC) 曲线评估相干和非相干系统性能

一、前言 此示例说明如何使用接收机工作特征 &#xff08;ROC&#xff09; 曲线评估相干和非相干系统的性能。该示例假设检测器在加性复杂高斯白噪声环境中工作。 ROC曲线通常用于评估雷达或声纳探测器的性能。ROC 曲线是给定信噪比 &#xff08;SNR&#xff09; 的检测概率 &a…

介绍CSDN的阅览器

大家好&#xff01;今天给大家一款由csdn官方打造的一个界面阅览器 意思就是靠我们自带的阅览器改变他的外观方式&#xff0c;这就是我用了CSDN阅览器之后的效果图 然后我们也可以清晰看到我们整个界面&#xff0c;对于我们经常写csdn博客的小伙伴来说是很方便&#xff0c;因为…

配电室动环监控系统的功能与应用

来源&#xff1a;山东仁科www.rkckth.com 六月天的 【配电室】&#xff0c;表面 “ 风平浪静 ”&#xff0c;实则 “ 多面夹击 ”。 步入六月份的夏季由高温掌控&#xff0c;为营造舒适凉爽的生活环境&#xff0c;人们的用电量也进入“汛期”&#xff0c;急速上涨&#xff0c…

亚信前端面试真题

目录 1.如何设置一个元素不可见&#xff1f; 2.谷歌浏览器设置比12px还小的字体&#xff1f; 3.深拷贝实现方法&#xff1f;??????? 4.防抖节流实现原理???? 5.遍历循环数组方法&#xff1f;???? 6.vue的双向绑定&#xff1f;???? 7.compute和watche…

【MySQL高级篇笔记-InnoDB数据存储结构 (中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、数据库的存储结构:页 1、磁盘与内存交互基本单位:页 2、页结构概述 3、页的大小 4、页的上层结构 二、页的内部结构 1、分三个部分看 2、从数据页角度看B 树如何查询 三、InnoDB行格式(或记录格式) 四、区、段与碎片区…

测试环境一键发布

背景 目前公司项目发布测试环境不够自动化&#xff0c;每次需要手动打包并且手动更新&#xff0c;影响开发效率 流程图 而且因为是本地手动发布&#xff0c;容易失误造成一些不必要的麻烦&#xff1a; 远端代码有更新&#xff0c;忘记拉取代码 快速发布&#xff0c;本地代码…

Redis7实战加面试题-高阶篇(Redis为什么快?高性能设计之epoll和IO多路复用深度解析)

多路复用要解决的问题 并发多客户端连接&#xff0c;在多路复用之前最简单和典型的方案&#xff1a;同步阻塞网络IO模型 这种模式的特点就是用一个进程来处理一个网络连接(一个用户请求)&#xff0c;比如一段典型的示例代码如下。 直接调用 recv 函数从一个 socket 上读取数据…

Nginx:Nginx优化与防盗链

Nginx&#xff1a;Nginx优化与防盗链 一、配置Nginx隐藏版本号二、修改Nginx用户与组三、配置Nginx网页缓存时间3.1 修改配置文件3.2 页面缓存验证 四、配置Nginx实现连接超时五、更改Nginx运行进程数六 、配置Nginx实现网页压缩功能七、配置Nginx实现防盗链 一、配置Nginx隐藏…

[数据集][目标检测]目标检测数据集蜜蜂4073张1类别VOC格式

出品方&#xff1a;未来自主研究中心(FIRC) 数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;7398 标注数量(xml文件个数)&#xff1a;7398 标注类别数&#xff…

如何利用宝塔面板快速搭建Wordpress网站?

本章教程&#xff0c;主要介绍一下&#xff0c;如何利用宝塔面板快速搭建Wordpress网站。 目录 一、 前置条件 二、 打开宝塔面板 三、解析域名 四、安装界面 五、主题安装 六、网站预览 一、 前置条件 需要准备一台Linux服务器&#xff0c;系统版本使用centos 7.X。 使用…

这两个PPT素材网站很多大佬都在用

01 OfficePLUS是一款基于Microsoft Office的专业辅助工具&#xff0c;能够为用户提供更加高效、便捷的办公体验。该工具针对多个版本的Office软件进行优化和定制&#xff0c;提供了丰富的功能和实用的设计资源&#xff0c;如PPT模板、Word模板、Excel模板等。 OfficePLUS的主…

除了ChatGPT,还有哪些好用的AI工具?(建议收藏)

目前市面上的AI工具非常多&#xff0c;本文对他们进行了汇总整理&#xff0c;大家可以按需下载或者使用哦~ 一、AI对话聊天工具 1、New Bing&#xff08;AI对话搜索&#xff09; https://cn.bing.com 有点像ChatGPT版的必应&#xff0c;可以帮你搜索问题、回答问题、写文案、写…

简单分析jsjiami.v6加密逻辑

代码案例&#xff1a; var _0xodRjsjiami.com.v6,_0xodR_function(){return[‮_0xodR],_0x4311[_0xodR,TMOw51jPALDkw,w6LDqcOhw7PCqQ,I8OkP0zDs8KF,fyjCv8OB,CMOdEk5b,OnthccOZHXXDoA,UnDCrcKvw61VAsKNw7TCoRN8wpkhFVzCgA40woV6wrTCtMOXbXo,CMOiwohCXsKhw4PDq8KKw5MbPMOnWVjC…

基于LayUI+Servlet的权限管理系统的设计

权限管理是所有后台系统的都会涉及的一个重要组成部分&#xff0c;主要目的是对不同的人访问资源进行权限的控制&#xff0c;避免因权限控制缺失或操作不当引发的风险问题&#xff0c;如操作错误&#xff0c;隐私数据泄露等问题。本系统基于JSPServletJDBCLayUI的技术&#xff…