合集-rust基础
摘要:本文没有什么需要特别详细阐述的内容,基本都是一些基础性的概念和一些空洞的定义。 一、基本概念 指针 -拥有一个指向一个堆数据的地址的变量。本身是变量,但其数据就是一个地址。 智能指针-一种特别的指针(也是变量),除了指向数据的地址,通常还具有元数据和其它功能。 智能指针通常使用结构体实现。智能指针不
阅读全文
摘要:Box 原意是盒子,实际生活是作为容器使用。 Rust没有称为Container,而是称为Box,体现了他们一贯的随意性。 不过Box这个词汇倒是可以反映盒子指针的特点:就是一个容器,没有什么特别的。 一、盒子指针定义 #[lang = "owned_box"] #[fundamental] #[s
阅读全文
摘要:一、前言 智能指针为什么称为智能指针? 大概因为它所包含的额外功能。 这些额外的功能使得编码或者运行时让指针看起来更有效、并体现某些“智”的特征,所以,我猜测这应该是rust发明人这么称呼此类对象为智能的原因。 据前面有关章节所述,我们知道智能指针多基于结构体(struct)扩展实现。 我们知道,s
阅读全文
摘要:一、前言 作为初学者,在只学习了前面几个章节的时候,我以为rust的所有权规则和它说的是一样的。 但实际上,rust发明人并没有遵循这个规则。按照我的想法,应该是因为如果坚持那样可能编写某些代码会太痛苦,甚至可能根本无法实现。 “可能根本无法实现”这是一个没有去证实的猜想。 不过,我很坚信:如果还是
阅读全文
摘要:这个章节主要是为了引出弱引用这个奇怪的概念。 说实在,这个没有什么太好写的,因为内容比较晦涩难懂! 在其它语言中,也常常存在所谓循环引用问题,和大部分问题一样,在其它语言中这些基本上都不是问题。但是在rust中,这是一个致命的问题。 例如有a,b两个点,a指向b,b指向a。 如果根据截止当前的知识(
阅读全文
摘要:如书本作者所言,并发编程在绝大部分语言中,都是相对复杂和困难的。 所以,涉及的内容会相对多一些,所涵盖的内容绝对不是几篇文章所可以容纳的。 权当一个乱弹琴! 和此系列的其它文章一样,本文的内容绝大部分来自于相关书籍,本人做了一些摘裁的工作,取我所需! 一、无畏并发 * 1.并发(concurrent
阅读全文
摘要:通过信道(channel)传递消息是rust的解决线程之间通信的2个工具之一,另外1个是共享内存状态。 注:channel有多种译法,有的地方翻译为通道、频道,此处循例称为“信道" rust推出这个,明显地是因为受到go之类的影响。 在书籍中,作者提到go编程文档中的内容: 不要通过共享内存来通讯;
阅读全文
摘要:线程之间共享内存数据,即go中部分人所憎恶的方式! 然而,这个方式并非没有其优点,否则操作系统也不提供这种实现方式。 闲言少序,上正文! 一、概述 * 1.当我们大谈基于信道通信时,应该指的是应用级别。如果是操作系统,应该还是会有多种措施的,否则rust的源头在哪里来着。 * 2.rust共享内存,
阅读全文
摘要:本文对应相关书籍17.1章节。 先言:async和多线程没有什么密切关系,当然也不是毫无关系! 一、async在rust到底是什么 async中文的意思是异步,在编程中指的是:执行一段代码,主线程可以在等待完成之前,先做其它事情。 如果有写过前端代码,就明白这个东西。例如经典的jquery的ajax
阅读全文
摘要:很可惜,出于一些理由,rust抛弃了OOP的核心特性之一:继承 其中一个理由应该是至关重要的,但是解释的比较模糊:继承增加了复杂性 的确,继承会让rust编译器变得更加复杂。rust编译器虽然足够体贴,但是它偏慢的编译速度也是很多人所吐槽的。 在我对rust编译了解更多之前,我对这个理由无法给出更加
阅读全文
摘要:本章节大概是书本上比较特殊一个,因为它没有什么复杂的内容,通篇主要讨论模式匹配的语法。 一、两个名词 a.可反驳 - refutable 对某些可能的值进行匹配会失败的模式被称为是 可反驳的(refutable) let Some(x) = some_option_value;如果 some_opt
阅读全文