首页 > 其他分享 >【Rust自学】14.6. 安装二进制crate

【Rust自学】14.6. 安装二进制crate

时间:2025-01-23 16:29:40浏览次数:3  
标签:cargo 14.6 target 二进制 crate ripgrep 安装 Rust

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)
请添加图片描述

14.6.1. 从cratea.io安装二进制crate

通过cargo_install命令可以从crates.io安装二进制crate。 这并不是为了替换系统包,它应该是 Rust 开发人员安装其他人共享的工具的便捷方式。

它的限制是只能安装具有二进制目标(binary target)的crate。binary target是一个可运行的程序,由拥有src/main.rs或其它被指定为二进制文件crate生成。

既然有binary target这个概念,那就会有library target这个概念,library target(库目标)无法单独执行。

通常,README.md文件里会有关于crate的描述,会告诉你这个crate是否有library target,是否有binary target。

14.6.2. cargo install

cargo install安装的二进制文件存放在根目录的bin文件夹下。

如果你使用rustup安装默认配置安装的Rust,那么二进制存放目录是$HOME/.cargo/bin

为了让cargo install所安装的程序能够直接执行,需要确保该目录在环境变量$PATH

例如,在第 12 章中,我们提到了 grep 工具的 Rust 实现,称为 ripgrep,用于搜索文件。要安装 ripgrep,我们可以运行以下命令:

$ cargo install ripgrep
    Updating crates.io index
  Downloaded ripgrep v13.0.0
  Downloaded 1 crate (243.3 KB) in 0.88s
  Installing ripgrep v13.0.0
......
   Compiling ripgrep v13.0.0
    Finished release [optimized + debuginfo] target(s) in 3m 10s
  Installing ~/.cargo/bin/rg
   Installed package `ripgrep v13.0.0` (executable `rg`)

中间省略了一部分,但大致就是这样。倒数第二行写到了程序被安装在~/.cargo/bin/rg

在终端使用echo %PATH%(Linux/MacOS使用$PATH)就可以查看此程序是否在环境变量中了。

14.6.3. 使用自定义命令扩展cargo

Cargo被设计为可以使用子命令来扩展。

举个例子,如果$PATH中的某个二进制文件是cargo-something,你可以通过运行 cargo something 来运行它,就像它是一个Cargo子命令一样运行它。

当你运行cargo --list时,也会列出像这样的自定义命令。能够使用cargo install来安装扩展,然后像内置的Cargo工具一样运行它们,这是Cargo设计的一个非常方便的好处。

标签:cargo,14.6,target,二进制,crate,ripgrep,安装,Rust
From: https://blog.csdn.net/weixin_71793197/article/details/145319572

相关文章

  • 【Rust自学】13.9. 使用闭包和迭代器改进IO项目
    13.9.0.写在正文之前Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。在本章中,我们会讨论Rust的一些特性,这些特性与许多语......
  • 【Rust自学】13.10. 性能对比:循环 vs. 迭代器
    13.10.0.写在正文之前Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。在本章中,我们会讨论Rust的一些特性,这些特性与许多语......
  • Rust能否通过一个对象实例的引用clone这个对象?
    eeeeeeeeeeeeeeeeeeeeeeeeeee在Rust中,通过对象实例的引用克隆对象是完全可以的,但前提是对象的类型必须实现了Clonetrait。以下是具体示例:#[derive(Clone,Debug)]structMyStruct{value:i32,}fnmain(){letobj=MyStruct{value:42};letobj_re......
  • 折腾笔记[11]-使用rust进行直接法视觉里程计估计
    摘要使用rust实现了一个完整的直接法视觉里程计系统,能够通过比较两幅图像中的像素强度来估计相机的运动。它通过单层和多层的优化策略,结合图像金字塔和并行计算,提高了位姿估计的精度和效率。最终,代码输出了优化后的相机位姿变换矩阵,并可视化了投影点的位置。Thisisacomplete......
  • 2025年Rust权威指南、Rust程序设计语言中文版PDF下载
    2025年《Rust权威指南》、《Rust程序设计语言》中文版PDF下载本书英文名为《TheRustProgrammingLanguage》,中文版名为《Rust权威指南》,社区翻译版名为《Rust程序设计语言》。本书由Rust核心开发团队编写而成,由浅入深地探讨了Rust语言的方方面面。从学习函数、选择数据结......
  • Rust代码中有一个Vec集合对象,此集合中存放了一些结构体实例,这个Vec集合对象的生命周期
    eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee当你需要长生命周期的Vec并想在多个地方引用它内部的结构体实例时,有几种方法可以实现这种设计。以下是不同场景的解决方案:方法1:使用索引引用Vec元素如果Vec本身的生命周期长,而你只是需要访问其元素,可以通过索引......
  • 在Rust中大范围使用引用会导致生命周期泛滥, 但是使用结构体clone也会导致内存的频繁分
    eeeeeeeeeeeeeeeeeeeeee在Rust中,引用和克隆各有优缺点,你的选择需要基于实际应用场景的需求进行权衡。以下是一些分析和建议:使用引用的优缺点优点:性能更优:避免了内存的分配和拷贝操作。更适合读密集场景:如果数据只需要被读取而不需要修改,引用非常高效。显式的生命周期管......
  • 折腾笔记[10]-使用rust进行ORB角点检测
    摘要打包ORB算法到bye_orb_rs库,使用rust进行ORB角点检测.PackagetheORBalgorithmintothebye_orb_rslibrary,anduseRustforORBcornerdetection.关键词rust;ORB;FAST;slam;关键信息项目地址:[https://github.com/ByeIO/slambook2.rs][package]name="exp65-......
  • 我把一个Rust程序函数标记为async之后,当它被执行时返回一个Future对象,是这样吧? 那我持
    UUUUUUUUUU是的,您理解是正确的。让我们详细解答您的问题。1.async函数的行为当你将一个Rust函数标记为async时,函数不会立即返回结果,而是返回一个Future对象。这个Future表示计算的结果,并且会在某个时刻完成(即变为Ready状态,包含计算结果)。例如:asyncfnexample()......
  • 如何在vscode中对rust程序进行debug?
    UUUUUUUUUUUUUUUUU在VSCode中调试Rust程序,你可以使用CodeLLDB扩展,它与VSCode配合很好,支持Rust项目的调试。以下是一步步的设置和使用说明:步骤1:安装VSCode扩展打开VSCode。打开扩展市场(侧边栏点击扩展图标,或者快捷键Ctrl+Shift+X)。搜索并安装CodeLLDB......