文章尽量以一个初学者的角度开始 Rust 的学习,但显然很难不带个人主观色彩和角度,只能尽力去客观写。

第一次知道 Rust 的时候,免不了搜索,百度、谷歌、必应等都可以搜出来官网地址:Rust Programming Language 。首页看到一个字眼 crate,于我而言是陌生的。

In 2018, the Rust community decided to improve programming experience for a few distinct domains (see the 2018 roadmap). For these, you can find many high-quality crates and some awesome guides on how to get started.

crate 是什么?

crate 类似于 .NET class library,因为我对 .Net 更熟悉,所以会拿 .Net 做比对,类比是学习的好方式。

但是显然不能真的认为它们非常相似,并且试图寻找它们的相同点,做比对是为了帮助理解。

.Net 引用类库的关键字是 using,Rust 引用 crate 的关键字是 use。

.Net 声明命名空间关键字是 namespace,Rust 声明 module 的关键字是 mod。

C# 对类型和类型成员规定了几种可访问性级别,同样 Rust 也有访问性级别规定。mod 中的方法,默认私有访问,同 mod 下可访问,外部访问该模块的方法的话,需使用关键字 pub 定义该方法。我想关键字 pub,可类比 C# 的 public 修饰符。当然二者绝对不可等同。 pub 可用于加载深层目录下的模块 - pub mod 或者 pub use 1

.Net 项目中添加一个 nuget package,需要一个程序包源,地址是 https://api.nuget.org/v3/index.json 。如果想在线浏览查看有多少种或者有哪些包,可访问 NuGet Gallery | Packages 。Rust 也有类似的地址,可以查看有哪些 crate 可供选择,可访问 Crates - crates.io: Rust Package Registry 。

最后还是要给出一个定义,回答 crate 是什么这个问题。

Rust 中,crate 是一个独立的可编译单元。具体说来,就是一个或一批文件(如果是一批文件,那么有一个文件是这个 crate 的入口)。它编译后,会对应着生成一个可执行文件或一个库。

各位看官或许会觉得奇怪,上面的一堆比对又是为了什么呢?是为了通过比对加深理解和记忆,将不熟悉的概念和知识内化为自己的知识,通过熟悉的知识作为桥接,使其易于自己接受。

同时在不断引申和解读的过程,也会不断的产生问题,例如为什么有关键字 use mod pub ,它们的出现是为了解决什么问题,这些关键字有没有更多的使用场景,显然我在上文中并没有展开写;还有如何生成一个 crate,并将其上传到 crates.io。

所以有问有答的学习方式,似乎是真的非常适合我。我会尽量保持这种不断挖掘好奇心的方式。

参考:

  • Rust - 维基百科,自由的百科全书

  • 模块 module 和包 crate · RustPrimer

  • .NET 类库概述 | Microsoft Docs

  • 常规类型系统 | Microsoft Docs

  • 命名空间 - C# 编程指南 | Microsoft Docs

  • crates.io: Rust Package Registry


  1. 具体使用方法不在本篇详细叙述 ↩︎

Rust 有问有答之 crate 是什么相关推荐

  1. 《C++入门经典(第5版•修订版)》——2.6 问与答

    本节书摘来自异步社区出版社<C++入门经典(第5版•修订版)>一书中的第2章,第2.6节,作者:[美]Jesse Liberty , Rogers Cadenhead,更多章节内容可以访问 ...

  2. 《C++入门经典(第6版)》——1.5 问与答

    本节书摘来自异步社区出版社<C++入门经典(第6版)>一书中的第1章,第1.5节,作者: [美]Rogers Cadenhead(罗格斯 卡登海德) , Jesse Liberty(杰西 ...

  3. 【学习笔记】智能制造问与答

    智能制造问与答 有ERP和MES还不算智能工厂吗? 对于智能制造来说,有两个重点: 机器与机器的互联,大量运用了感知器.控制器.人工智能等软硬件系统和先进的技术把人和机器,物理和虚拟世界连接起来,变成 ...

  4. 【转载】IT新曙光——“遇事不决,量子力学” 的问与答

    前言: 量子计算究竟是怎么回事,现在发展到什么阶段了,不是专业人士可能真的没机会了解.本文就通过得到课程上面的李铁夫老师对于量子计算的问与答分享给大家,希望对大家的生活与工作有所帮助.李铁夫老师是清华 ...

  5. 8问8答,一篇文章读懂空间音效

    近日,第一届网易集团创新奖评选落下帷幕,网易智企"逼近人耳极限-音频通话"项目从众多参赛作品中脱颖而出,荣获"0-1创新奖"三等奖. 此次获奖的项目诞生于网易智 ...

  6. 机器学习常见知识点自查50问与答

    机器学习常见知识点自查50问与答 1.什么是机器学习 2.机器学习与数据挖掘的区别 3.什么是机器学习的过度拟合现象 4.过度拟合产生的原因 5.如何避免过拟合 6.什么是感应式的机器学习 7.机器学 ...

  7. asp.net添加删除表格_你问我答|135编辑器使用之超链接和表格问题

    嘿,胖友们大家好呀,我是三儿. 万众期待的『你问我答』栏目又回来了!之前我们有出过两期内容,解决了胖友们在日常工作中使用135编辑器常见到的一些问题. >>>>>点我查看 ...

  8. mysql数据库索引页号为什么从3开始_MySQL数据库快问快答

    原标题:MySQL数据库快问快答 前言 今天楼主给大家列一下关于数据库几个常见问题的要点,如果大家对其中的问题感兴趣,可以自行扩展研究. 1. UNION ALL 与 UNION 的区别 UNION和 ...

  9. DataWorks百问百答01:数据同步该用什么资源组

    引子 很多用户在使用数据集成建立同步任务时,往往都会困惑一个设置,即"资源组设置". 大家常有的疑问是"资源组是用来做什么的?跟网络之间什么关系?我该选择那种资源组?&q ...

  10. 有问有答 | 精华问题汇总

    出品 | CSDN云计算 有问有答,一问一答的形式,帮助大家快速解决更多专业难题. 边缘计算精华问答 | 边缘计算有哪些应用场景? 物联网对物联网技术的快速发展和云服务的推动使得云计算模型已经不能很好 ...

最新文章

  1. 23 版本以上的v4包_Ant Design Pro V2升级到V4 小结
  2. Linux文件特殊权限、FACL、sudo
  3. Android关于notification的在不同API下的用法说明
  4. 建立索引和主外约束_Mysql索引原理
  5. pandas处理大数据的一些小技巧
  6. php中日期选择代码,实现JS日期时间选择器
  7. WCF服务实例激活类型编程与开发(转)
  8. centOS目录结构
  9. risc 服务器 操作系统,数据中心系统用RISC还是CISC?
  10. LeetCode简单题目(#263 #268 #278 #283 #290)-5道(数字、字符串)
  11. 大学计算机相关理论,大学计算机理论基础 大学计算机基础理论题.doc
  12. html制作qq对话消息框,qq对话框设置 QQ聊天对话框的背景皮肤怎么设置?
  13. IDEA ideaIU点击无反应
  14. 第三方支付通道 聚合支付 第三方支付平台
  15. Linpack安装测试流程记录
  16. AutoIt教程资源汇总
  17. 亮度均匀性 matlab,亮度均匀性(Uniformity)
  18. 腾讯QQ会员中心g_tk32算法【C#版】
  19. 头歌 MongoDB 文档的高级查询操作(全部关卡)
  20. HDU 4379 - The More The Better

热门文章

  1. java禁止夏令时_在指定时区导入日期时间,忽略夏令时
  2. MP4文件格式详解——元数据moov(一)mvhd box
  3. Excel数据透视,日期最大值或最小值显示为0
  4. Chapter 8 Part-of-Speech Tagging
  5. 湍流公式推导系列——(一) 不可压湍动能方程的推导与含义
  6. 网传腾讯员工收入证明,税后250万,月均20万...
  7. Ubuntu 常用软件推荐(QQ、微信、MATLAB等)及安装过程
  8. python语料库_NLPPython笔记——语料库
  9. Java中Flie类的用法
  10. office安装下载