第2章 Rust初体验4/8:提供标准库之外功能的Library Crate:简化包管理和依赖管理:猜骰子冷热游戏

讲动人的故事,写懂人的代码

2.4 故事2: 生成点数之和的随机答案

又是新的一天,大家的培训课又开始了哦!现在,我们的学员们开始用三种语言来实现故事2,加油!

2.4.1 Rust版故事2

2.4.1.1 提供标准库之外功能的Library Crate:简化包管理和依赖管理

贾克强:“我们的故事2需要生成一些随机数,可是Rust的标准库并没有提供这个功能。没关系,我们只需要稍微地改一下Cargo.toml文件,添加一下rand这个依赖就可以啦!”

@@ -6,3 +6,4 @@ edition = "2021"# See more keys and their definitions at <https://doc.rust-lang.org/cargo/refe>
rence/manifest.html[dependencies]
+rand = "0.8.5"

(注:为了帮助你更好地查看代码的变化,本书采用git diff的代码对比方式来展示代码的变化。就像我们上面对Cargo.toml文件的变化一样,让我们一起来理解如何阅读它。

@@ -6,3 +6,4 @@ 这部分展示了代码块的行号变化:-6,3 意味着下面展示的代码是从原文件的第6行开始的,包括3行。+6,4 则表示这次变化后的文件从第6行开始,包括4行。

接下来的代码行,如果开头有 + 号,那就表示这是新添加的行。如果开头有 - 号,那就表示这行在变动中被删除了。如果既没有 + 号也没有 - 号,那就表示这行在这次变动中并没有被修改。)

贾克强:“Rust带来的强大的包管理工具Cargo,简直就是我们的好伙伴!它让我们添加、管理和更新依赖库变得简单且直观。只需要一个简单的配置文件(Cargo.toml),你就可以像大师一样管理项目的依赖了。Cargo的优点在于它能帮我们统一管理所有的依赖,大大减轻了我们手动管理依赖的负担。更棒的是,Cargo还支持自动解析依赖和版本管理,让包管理工作变得轻松许多。”

“相比于Java的Maven和Gradle等工具,Rust的Cargo易用许多,配置和管理过程更为简洁。C++的依赖管理依赖于vcpkg、NuGet、Conan、build2和Hunter等工具,配置过程较为繁琐,并且缺乏统一的包管理工具。”

[dependencies]这一行告诉我们接下来的内容是项目的依赖项。Rust 使用 Cargo 作为包管理器和构建工具,而 [dependencies] 就是我们列出当前项目所需要的外部crate的地方。“

rand = "0.8.5"这一行表示我們的项目需要 rand 这个library crate,并且指定了版本号为 0.8.5。简单明了,对吧?”

2.4.1.2 什么是crate

赵可菲:“Crate是什么玩意儿?”

贾克强:“在Rust中,crate是一个独立的编译单元,你可以把它理解为Rust程序中的一个模块(注:crate详见第8章)。每个crate都有一个Cargo.toml文件,这个文件定义了crate的元数据和依赖项。”

2.4.1.3 Crate的分类

贾克强:“crate有两种。一种是library crate,另一种是binary crate。”

“Library crate是可以被其他crate或项目使用的代码库。它没有主函数(

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

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

相关文章

【云岚到家】-day03-1-门户等缓存方案选择

【云岚到家】-day03-1-门户-缓存方案选择 1 门户1.1 门户简介1.2 常见的技术方案1.2.1 需求1.2.2 常见门户1.2.2.1 Web门户1.2.2.2 移动应用门户1.2.2.3 总结 2 缓存技术方案2.1 需求分析2.1.1 界面原型2.2.2 缓存需求 3 SpringCache入门3.1 基础概念3.1.1 Redis客户端3.1.2 Sp…

0 配置

文章目录 创建用户第一个命令&#xff1a;第二个命令组合&#xff1a; 防火墙端口开放上传文件改权限websocketapplication.yaml 创建用户 在 CentOS 7.9 中&#xff0c;使用 useradd 命令创建用户和 groupadd 命令创建用户组时&#xff0c;有一些选项和参数用于指定不同类型的…

基于uni-app与图鸟UI打造的各领域移动端模板大赏

随着移动互联网的迅猛发展&#xff0c;各类移动端应用层出不穷&#xff0c;为了帮助企业快速搭建高效、美观的移动平台&#xff0c;我们基于强大的uni-app与图鸟UI&#xff0c;精心打造了不下于40套覆盖多个领域的移动端模板。今天&#xff0c;就让我们一起领略这些模板的风采吧…

C++的封装(十三):迭代器问题

前面讨论了linux风格的链表的做法。那个例子没有用到迭代器。现在把它加上: class list { public:struct node {pair<node*, node*>link;} handle;list() { handle.link.firsthandle.link.second&handle; }~list() {}public:struct iterator_st {node *p;};class it…

PaddleOCR学习——PP-OCR系列

相关知识前置&#xff1a; PP-LCNet PP-LCNetV3 PP-LCNetV3系列模型是PP-LCNet系列模型的延续&#xff0c;覆盖了更大的精度范围&#xff0c;能够适应不同下游任务的需要。PP-LCNetV3系列模型从多个方面进行了优化&#xff0c;提出了可学习仿射变换模块&#xff0c;对重参数…

webpack之HMR

什么是HMR Hot Module Replacement是指当我们对代码修改并保存后&#xff0c;webpack将会对代码进行重新打包&#xff0c;并将新的模块发送到浏览器端&#xff0c;浏览器用新的模块替换掉旧的模块&#xff0c;以实现在不刷新浏览器的前提下更新页面 使用HMR 安装 yarn add …

Fluid 1.0 版发布,打通云原生高效数据使用的“最后一公里”

作者&#xff1a;顾荣 前言 得益于云原生技术在资源成本集约、部署运维便捷、算力弹性灵活方面的优势&#xff0c;越来越多企业和开发者将数据密集型应用&#xff0c;特别是 AI 和大数据领域应用&#xff0c;运行于云原生环境中。然而&#xff0c;云原生计算与存储分离架构虽…

easyexcel的简单使用(execl模板导出)

模板支持功能点 支持列表支持自定义头名称支持自定义fileName支持汇总 模板示例 操作 pom引入 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version></dep…

uniapp中u-input点击事件失效

当给u-input设置了disabled/readonly属性后&#xff0c;pc浏览器中点击事件失效&#xff0c;但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件&#xff0c;给input加上css属性&#xff1a;pointer-events&#xff1a;none pointer-events CSS 属性指定在什…

糖料蔗精准测产 ,珈和科技倾力打造广西农险科技服务新标杆!

2024年中央一号文件中提到&#xff0c;鼓励地方发展特色农产品保险。随着近年来广西省对农业风险管理方式的不断探索与试点&#xff0c;糖料蔗、桉树、柑橘等种植收入保险需求迅速增加&#xff0c;传统的测产方式在效率上不仅耗时费力&#xff0c;而且难以满足大规模经济作物的…

Vue笔记(三)

上一篇&#xff1a;Vue二&#xff09;-CSDN博客 目录 1.自定义指令 v-loading的封装 2.插槽 文本插槽 文本插槽&#xff08;有默认值&#xff09; 具名插槽 作用域插槽 详细做一个练习 实现如下效果 目录结构 准备数据 父传子数据 使用文本插槽自定义按钮文本 实…

RushJs遇到Browserslist: caniuse-lite is outdated解决方案

突然。 CI服务器上打包应用的是会报一个警告。 Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-dblatest Why you should do it regularly: https://github.com/browserslist/update-db#readmeBrowserslist里的数据库过期了。 这个警告会让C…

Maven: 编码GBK的不可映射字符不能编译

使用mvn compile命令&#xff0c;出现错误: 编码GBK的不可映射字符不能编译。这是因为代码或注释中存在中文引起的&#xff0c;一般在ide中会自动处理编译时的字符集&#xff0c;就不会碰到这个错误。这个错误是在生成代码后&#xff0c;其中自动加上了中 文注释&#xff0c;手…

vue路由:hash模式下跳转404的问题。

vue的路由模式&#xff1a;hash和history。 最近有个问题&#xff0c;其实很常见就是hash模式跳转404。 发生问题的场景&#xff1a; 1.项目加载的动态路由。 2.首页和登录页在一个动态路由模块&#xff0c;而其他的管理层页面模块在另外一个动态路由模块。按需加载&#x…

在两个脚本之间传输文本信息

一、接收方有一个文本&#xff0c;用于显示接收的信息 (一&#xff09;接收方&#xff1a; 1、UI-Text TextMeshPro&#xff0c;名字自取。如&#xff1a;TitleText 2、给TitleText添加Recipients.cs组件。 using System.Collections; using System.Collections.Generic; u…

动态防护开启教程和体验感受

动态防护是雷池 WAF 社区版在版本 [6.0.0] 中新增的一个功能&#xff0c;它属于站点高级防护的一部分。动态防护的主要作用是自动动态加密网站的 HTML 和 JavaScript 源码&#xff0c;目的是阻止爬虫和攻击自动化程序的分析。这项功能在 [6.0.0] 版本中标记为 BETA 版本&#x…

c#中switch case语句的用法

前言 在c#中如果对于两种不同情况的处理&#xff0c;一般使用If else结构&#xff0c;但是对于3种及以上情况的处理最好使用switch case语句来增强代码的可读性&#xff0c;本文就是详细介绍switch case语句在c#中的常见应用 1、常规使用 下面的代码中c是一个Int类型的变量&…

2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)

OpenAi 环境安装 首先确保您的计算机上已经安装了 Python。您可以从 Python 官方网站下载并安装最新版本 Python。安装时&#xff0c;请确保勾选 “Add Python to PATH” &#xff08;添加环境变量&#xff09;选项&#xff0c;以便在 cmd 命令行中直接使用 Python。 安装 Op…

华为大咖说 | AI 是行业的未来, 还是另一个“元宇宙”?

本文作者&#xff1a;陈冠宏&#xff08;华为网络MSSD首席顾问&#xff09;全文约4497字&#xff0c;阅读约需10分钟 在本年度的517电信日上&#xff0c;中国电信高层在产品升级计划发布会中喊出“ALL in AI”战略&#xff0c;其震撼力让人瞩目。 自2022年11月OpenAI推出划时代…

机器学习归一化特征编码

特征缩放 因为对于大多数的机器学习算法和优化算法来说&#xff0c;将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言&#xff0c;例如有两个不同的特征&#xff0c;第一个特征的取值范围为1——10&#xff0c;第二个特征的取值范围为1——10000。在梯度…