当前位置: 首页 > news >正文

【Rust】Cargo介绍

一、Cargo简介

  • Cargo 是Rust语言的包管理工具,它帮助我们管理我们项目的依赖。
  • 做js开发的同学应该了解nodejs的包管理工具npm,Cargo和npm做的事情是一样的。
  • C和C++的同学可能对这个就比较陌生了,C/C++语言没有统一的依赖管理工具,各个项目用的依赖管理工具不仅相同。有用Cmake的,也有用GN的。

二、Cargo基本用法

  • cargo new hello_world 创建新项目。
  • cargo build编译。
  • cargo run编译和运行。

三、为什么要有Cargo

  • 在Rust语言中一个库或者一个可执行文件,被称为crate。Crate是通过rustc工具编译出来的。
    rustc hello.rs可以直接通过rustc编译rust文件。
  • 如果所有文件的编译都使用rustc来编译,文件比较多的时候,这个编译命令就会越来越多,并且如果文件依赖比较复杂,那么编译命令就会变得更加复杂。在C/C++里面可以理解成直接使用gcc/g++命令来编译整个项目。
  • 所以为了更加方便的管理项目之间的依赖,就有了Cargo工具。

四、Cargo做了什么

  • 为了达成上述目标,Cargo做了四件事情:
    • 引入了两个元数据文件,里面包含一些包信息。
    • 获取并构建包的依赖项。
    • 使用正确的参数用rustc或者其他构建工具来构建包。
    • 提供使得rust包更容易使用的约定。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaScript-实例-button
  • Rust: polars行遍历,从dataframe到struct及Bar设计比较
  • ASCII码对照表(Matplotlib颜色对照表)
  • 如何选择TikTok菲律宾直播网络?
  • MySQL之备份与恢复(八)
  • vue---基本原理(二)
  • 虚拟机交叉编译基于ARM平台的opencv(ffmpeg/x264)
  • vue前端通过sessionStorage缓存字典
  • 概率统计(二)
  • Java请求webService,IDEA生成客户端调用代码
  • 隔离级别-隔离级别中的锁协议、隔离级别类型、隔离级别的设置、隔离级别应用
  • ssrf结合redis未授权getshell
  • C语言-动态内存管理
  • Leetcode 3213. Construct String with Minimum Cost
  • 开源模型应用落地-LangChain高阶-智能体探究-agent类型(一)
  • [译] React v16.8: 含有Hooks的版本
  • 【Leetcode】104. 二叉树的最大深度
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Invalidate和postInvalidate的区别
  • Linux快速复制或删除大量小文件
  • redis学习笔记(三):列表、集合、有序集合
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于组件的设计工作流与界面抽象
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何设计一个比特币钱包服务
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 双管齐下,VMware的容器新战略
  • 突破自己的技术思维
  • 微信开源mars源码分析1—上层samples分析
  • 智能合约Solidity教程-事件和日志(一)
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ‌内网穿透技术‌总结
  • # dbt source dbt source freshness命令详解
  • # include “ “ 和 # include < >两者的区别
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (1)Android开发优化---------UI优化
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (SERIES12)DM性能优化
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二十六)Java 数据结构
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)计算机毕业设计高校学生选课系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (六)激光线扫描-三维重建
  • (三)docker:Dockerfile构建容器运行jar包
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (译) 函数式 JS #1:简介
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting