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

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或项目使用的代码库。它没有主函数(

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部