

Javascript开发者的Rust教程cargo依赖管理
source link: https://www.myfreax.com/a-rust-tutorial-for-javascript-developers-cargo-dependency-management/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Javascript开发者的Rust教程cargo依赖管理

cargo是Rust的包管理器,其操作类似于node的npm
。Cargo默认从crates.io下载第三方依赖crate箱子,crate的中文翻译箱子。您可以像在npmjs.com上一样注册帐户并发布模块。
你可以对cargo命令做一些快捷的映射,您几乎可以将您在npm使用的命令转换为Rust的cargo的命令。
在node.js你有package.json
管理依赖的模块或者库。在Rust中使用Cargo.toml
。管理你的Rust项目的依赖。Cargo的配置文件格式是toml,而不是你经常使用npm的package.json的JSON格式。
Cargo使用Cargo.toml
文件来了解要下载哪些依赖的模块/库、如何运行测试以及如何构建您的项目。
在本教程中,将说明使用cargo
初始化项目,安装依赖/模块,cargo install
全局安装,cargo test
运行测试,cargo publish
发布模块,运行任务,使用cargo-workspaces创建多个独立Rust项目,cargo-expand展开rust宏代码或者编译后的代码。
初始化项目
在node.js中是npm init
。在Rust中,你有两个命令可以初始化一个Rust项目。分别是cargo init
和cargo new
。
cargo init
和cargo new
区别是cargo init
在当前目录初始化项目。cargo new
在新目录中初始化项目,当运行cargo new my-rust
时my-rust目录将会被创建。
Cargo安装依赖/模块
在Node.JS中是安装依赖/模块的命令是npm install dep-name
。但在Rust的cargo并没有快捷的子命令让你添加依赖。
但是如果您可以安装cargo-edit
来扩展cargo的子命令。这样你就可以使用cargo子命令添加依赖。
例如,cargo add [email protected] --dev
将添加依赖到开发依赖中。cargo add gcc --build
将添加依赖到构建依赖中。除此之外还为您提供了四个新命令add
、rm
、upgrade
和set-version
。
在node.js中是npm install --global
。在Rust中对应的命令是cargo install
。
使用cargo install
将在cargo的bin目录中下载、构建和存储可执行文件。如果您是通过官方的默认方式安装rust
/rustup
。
那么这些文件将放置在用户的家目录中,对于Linux/Mac OS用户通常是~/.cargo/bin
。由于安全问题,请不要使用sudo cargo install
。
在Node.JS中运行测试命令通常是npm test
,因为很多项目都是如此声明在Package.json中。在Rust中对应的命令cargo test
。
cargo test
命令通过Cargo自动运行单元测试、集成测试和文档测试。Rust测试有很多内容,我们将在稍后的文章中介绍。
在Node.JS中发布模块的命令是npm publish
。在Rust中对应的命令是cargo publish
。
如果需要发布模块。您需要首先在crates.io上注册一个帐户并设置身份验证信息。cargo会帮助您发布模块到crates.io。
在Node.JS中运行任务的命令是npm run xxx
。在Rust中,您有用于常见任务的命令,但你可以添加自己的任务。
在Node.JS中,您可能会使用npm run start
来运行您的服务器或可执行文件。但0在 Rust中,你可以使用cargo run
。您还可以使用cargo run --example xxx
来自动运行示例代码。
在Node.JS中,您可能会使用npm run benchmarks
来分析您的代码。在Rust中对应的命令是cargo bench
.
在Node.JS中,您可能会使用npm run build
来运行webpack、tsc或其它命令。在Rust中对应的命令是cargo build
。
在Node.JS中,您可能会使用它npm run clean
来删除临时文件或生成的文件。在Rust中对应的命令是cargo clean
它会清除你的构建文件夹,默认情况下target
目录。
在Node.JS中,您可能会使用npm run docs
来生成文档。在Rust中对应的命令是cargo doc
。
对于代码生成或预构建步骤,cargo 支持在构建之前运行的构建脚本。默认情况下涵盖了您的许多用例,但是对于其它事情,您都必须自己解决。
npm
的内置任务运行器是Makefile
。这是您在JavaScript项目中很少看到的原因之一。
在Rust生态系统中,你就没那么幸运了。Makefile仍然很常见,但你可以使用just
来简化运行指定的命令。这相当于为Makefile命令创建快捷方式。
just
它是一个不错的选择,也是流行的解决方式。Makefile
它在保持相似语法的同时消除了它的许多奇怪之处。
以下cargo命令将会安装just
到你的~/.cargo/bin
目录中,即全局安装:
$ cargo install just
cargo-workspaces
cargo workspaces
或cargo ws
简化了工作区及其成员的创建和管理。它的灵感来自 Node.JS项目的lerna
。
cargo workspaces
最有价值的功能之一是自动发布工作区,用已发布的版本替换本地依赖。
以下cargo命令将会安装cargo-workspaces
到你的~/.cargo/bin
目录中,即全局安装:
$ cargo install cargo-workspaces
cargo-expand
在Rust中的宏是非常普遍的存在,以至于您的第一个Hello World应用程序中很多逻辑都将被打包成一个宏。
宏可让你您不重复编写代码,但它会使代码难以阅读和排除故障。cargo expand
可帮助你展开rust的宏。
以下cargo命令将会全局安装cargo-expand
,安装后您可以运行cargo expand [item]
以打印rustc编译器编译后生成的源代码。
$ cargo install cargo-expand
cargo expand
采用模块命名,而不是文件路径。运行cargo expand main
不会扩展src/main.rs,它会展开项目根目录中main函数。
它使用通用rust模块方式展开指定的代码,要指定在文件中找到模块,如src/some_module/another.rs,您将运行cargo expand some_module::another。
如果你运行cargo new
创建的项目,然后使用cargo expand
命令来测试,这可能就是你的src/main.rs
样子。println!()
是一个宏。
$ cargo expand main
fn main() {
{
::std::io::_print(::core::fmt::Arguments::new_v1(
&["Hello, world!\n"],
&match () {
() => [],
},
));
};
}
cargo expand生成的代码
Recommend
-
77
安全验证 - 知乎系统监测到您的网络环境存在异常,为保证您的正常访问,请点击下方验证按钮进行验证。在您验证完成前,该提示将多次出现
-
27
了解 Rust 的软件包管理器和构建工具。 Rust 是一种现代编程语言,可提供高性能、可靠性...
-
16
Generating Your First Rust App with Cargo Feb 23, 2020 The Rust tool cargo is the Rust equivalent of rake and bundle...
-
12
cargo-mobile: Rust on mobile made easy! Nov 24, 2020 • Francesca Lovebloom The answer to “how do I use Rust on iOS and Android?”
-
11
Cargo: Rust's community crate host Nov. 20, 2014 · Alex Crichton Today it is my pleasure to announce that crates.io is online and ready for action. The...
-
5
Cargo is the Rust package manager, and is a powerful tool that can make programming in Rust quite a delight.It provides various commands that can be used in your daily programming. The list of commands that Cargo supports can be extended thro...
-
7
PipEnv 安装 $ pip install --user pipenv # 升级 pipenv $ pip install --user pipenv --upgrade # 如果不知道如何将 shell 找不到的命令添加到系统环境变量则这样寻找 $ python -m site --user-base ...
-
8
你编写的JavaScript比任何其他语言都多。并且很喜欢它,随着你对Javascript/Node.JS的熟悉,你应该知道Javascript/Node.JS并适合密集计算型的应用。Javascript/Node.JS有着不错的运行速度很快,但对于重计算的任务时它并没有那么快。Javascript/Node.JS写起来...
-
11
更新于 2022/05/31 | 创建于 2022/05/31 JavaScript开发者的rust教程使用vscode调试rust
-
5
如果您从未使用过编译为原生二进制文件的语言,那么您将在Rust中将是可以分发二进制文件的语言。你不必让用户安装指定的运行时环境。对于node.js、Python、Ruby、PHP、Java还是其它非编译到原生二进制的语言。不得不向外人解释时,为什么要安装一堆东西才能运...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK