首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么这段Rust 2018代码使用` `cargo build`编译,而不使用rustc?

Rust 2018代码使用cargo build编译而不使用rustc的原因有以下几点:

  1. 依赖管理:cargo是Rust的官方构建工具和包管理器,它能够自动管理项目的依赖关系。通过在项目根目录下的Cargo.toml文件中列出依赖项,cargo可以自动下载和构建所需的依赖库。这样可以简化依赖管理的过程,避免手动下载和配置依赖项的繁琐工作。
  2. 构建优化:cargo提供了一些构建优化的功能,例如增量编译和并行构建。增量编译可以只重新编译发生变化的代码文件,而不需要重新编译整个项目,从而提高构建速度。并行构建可以同时编译多个代码文件,充分利用多核处理器的性能,加快构建过程。
  3. 构建配置:cargo允许通过Cargo.toml文件中的配置选项来自定义构建过程。可以指定编译目标、编译选项、优化级别等。这样可以根据项目的需求进行灵活的构建配置,而不需要手动指定每个编译参数。
  4. 项目管理:cargo提供了一些项目管理的功能,例如创建新项目、构建项目、运行测试、生成文档等。通过简单的命令,可以方便地管理整个项目的生命周期。

综上所述,使用cargo build编译Rust 2018代码相比于直接使用rustc具有更多的优势和便利性。在实际开发中,cargo是Rust开发者常用的工具,能够提高开发效率并简化项目管理。对于初学者和小型项目来说,使用cargo是更推荐的方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rust 从入门到精通03-helloworld

这里介绍两种方式,一种是rust原生方式,一种是利用 cargo 工具(重要) 1、rustc 方式 1.1 创建项目目录 rust 运行不关心代码存放的目录,我们可以任意选择一个合适的位置,创建一个目录...如果修改了源文件的话,Cargo 会在运行之前重新构建项目,并会出现像这样的输出: 2.6 cargo check cargo check 该命令可以快速检查代码确保其可以进行编译,但是产生可执行文件...为什么你会不需要可执行文件呢? 通常 cargo check 要比 cargo build 快得多,因为它省略了生成可执行文件的步骤。...当准备好使用可执行文件时才运行 cargo build。 2.7 发布(release)构建 当项目最终准备好发布时,可以使用 cargo build --release 来优化编译项目。...这会在 target/release 不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。

55610

Rust学习笔记之Rust环境配置和入门指南

既然,上面所说的是「大势所趋」,那我们为什么尝试一下。 针对已经在工作的人来说,Rust也是有一定的诱惑力。将Rust用生产环境并用它来处理各式各样的任务。...❝这里的main函数比较特殊:当你运行一个「可执行」Rust程序时,所有的代码都会从这个「入口函数」开始运行。 ❞ 这段代码的第一行声明了一个名为main的、没有任何参数和返回值的函数。...❞ ---- 使用Cargo构建和运行项目 在hello_cargo项目目录下,Cargo可以通过下面的命令来完成「构建任务」。 cargo build 并通过....继续使用tree来查看文档目录 「首次使用」命令cargo build构建的时候,它会在「项目根目录」下创建一个名为Cargo.lock的新文件,这个文件记录了「当前项目所有依赖库的具体版本号」。...此外,Cargo提供了一个叫做cargo check的命令,用来「快速检查当前代码是否可以通过编译」,不需要花费额外的时间去真正生成可执行程序。

94910

Rust 易学教程】学前准备:Cargo, 你好

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 这将提供 Cargo 构建工具(Cargo)和 Rust 编译器(rustc...命令如下: sudo apt install cargo rust-src rustfmt Rust 生态 Rust 的生态系统由许多工具组成,其中主要的是: rustc: Rust 编译器,将...Rust 也有版本: 当前的版本是 Rust 2021。之前的版本是 Rust 2015 和 Rust 2018 允许版本对语言进行向后兼容的更改。...使用 cargo check 快速检查项目的错误,使用 cargo build 编译运行它。对于正常的调试构建,将在 target/debug/ 中找到输出。...使用 cargo build -release 在 target/release/ 中生成一个优化的 release build。 你可以通过编辑 Cargo.toml 为你的项目添加依赖项。

32030

Rust学习】01_入门

在运行 Rust 程序之前,您必须使用 Rust 编译器对其进行编译rustc 方法是输入命令并向其传递源文件的名称,如下所示:$ rustc main.rs如果您具有 C 或 C++ 背景,您会注意到这类似于...让我们回顾一下到目前为止我们对 Cargo 的了解:我们可以使用 cargo new 创建一个项目我们可以使用 cargo build编译一个项目我们可以一步到位地构建 cargo run 和运行一个项目我们可以在生成二进制文件的情况下构建一个项目来检查错误...发布生产当您的项目最终准备好发布时,您可以使用 cargo build --release 它进行优化编译。...此命令将在 target/release 不是 target/debug 中创建可执行文件。这些优化使你的 Rust 代码运行得更快,但打开它们会延长你的程序编译所需的时间。...如果要对代码的运行时间进行基准测试,请确保使用目标/版本中的可执行文件运行 cargo build --release 和基准测试。

6100

Rust + Android 的集成开发设计

Cargo使用 Rust 编译器(Compiler) rustc,所带来的风险等(译注:指有些大型项目中,避开 Cargo,直接使用 Rust 编译rustc。...无需嵌套的(nested)构建系统 Rust 提供了 Cargo 作为默认的构建系统和包管理器,收集依赖项并调用 rustcRust 编译器)来构建目标 crate(Rust 语言包)。...无需 build.rs 脚本 build.rs 脚本编译Rust 二进制文件,它在构建过程中执行 Cargo 构建,以及处理预生成任务。...Android 同样避免了其它语言的构建脚本,而是简单地使用它们,以告知 Android.bp 文件的结构。 为什么支持过程宏(proc_macro),而非构建脚本(build.rs)?...为什么我们支持过程宏(proc_macro)?因为它们是编译器插件,在编译器上下文中的主机上执行代码

2.1K10

我用 Rust 改写了自己的C++项目:这两个语言都很折磨人!

(如自定义断言宏) C 的 API 可惜这部分代码涉及并发或 I/O,我测试不了 Rust 里 async/await 的编译时间开销,但这只是 quick-lint-js 项目里的一小部分,所以我还不用太担心...我写完才发现,原来 Rust 项目比 C++ 项目还要大,Rust 代码 17.1k 行, C++ 只有 16.6k 行。...以下是我觉得可能会优化 Rust 构建时间的条目: 更快的链接器 Cranelift 后端 编译器和链接器标志 工作区与测试布局区分 最小化依赖功能 cargo-nextest 使用 PGO 自定义工具链...(测试于 Linux,数据越小越好) 2023 年 1 月 7 日更新:rustc 的 Cranelift 后端维护者 bjorn3 帮我看了下为什么 Cranelift 在我的项目上效果不佳:可能是...对我的项目而言,以下是三种合理布局: 理论上来说,如果我们把代码拆成多个 crate,cargo 就可以并行化 rustc 的调用。

1.1K20

Rust学习笔记:1.2 两个典例及常用命令

的参数 这行代码以 ; 结尾 编译和运行时单独的两步 运行 Rust 程序之前必须先编译,命令为:rustc 源文件名 编译成功后,会生成一个二进制文件 在 Windows 上还会生成一个 .pdb...文件,里面包含调试信息 Rust 是 ahead-of-time 编译的语言 可以先编译程序,然后把可执行文件交给别人运行(无需安装 Rustrustc 只适合简单的 Rust 程序 Hello,...源代码都应该在 src 目录下 顶层目录可以放置:README、许可信息、配置文件和其他与程序源码无关的文件 如果创建项目时没有使用 cargo,也可以把项目转化为使用 cargo: 把源代码文件移动到...cargo check cargo check:检查代码,确保能通过编译,但是产生任何可执行文件 cargo check 要比 cargo build 快得多 编写代码的时候可以连续反复使用 cargo...为发布构建 cargo build --release 编译时会进行优化 代码会运行得更快,但是编译事件更长 会在 target/release 不是 target/debug 生成可执行文件 两种配置

39510

Rust安装与入门

文件命名 Rust程序的文件后缀名为.rs 文件的命名规范为下划线连接的单词,例如hello_world.rs 编译与运行 编译rustc main.rs 运行: Linux下:....; } 注: rustc只适合简单的Rust程序,如果Rust程序文件比较多,应该用Cargo编译Cargo CargoRust的构建系统和包管理工具。...,不需要手动修改该文件 # 构建并且运行cargo项目 cargo run 如果之前编译成功过,并且源码没有改变,那么就会直接运行二进制文件 # cargo check命令检查代码,确保能通过编译,但是产生任何可执行文件...cargo check cargo check比cargo build快得多,使用cargo check检查代码效率更高 # 为发布构建 cargo build --release 编译时会进行优化,...代码会运行的更快,但是编译时间更长 会在target/release不是target/debug生成可执行文件

42521

Rust 1.52.1 已正式发布,及其新特性详述—重要,官方建议升级

今天的新版本 Rust 1.52.1,解决了因新添加的验证导致的问题。此版本中,临时将 Rust 编译器中的默认值更改为禁用增量编译,除非用户有意选择启用。 为什么会出现此问题?...这意味着,它们都是由于使用增量编译造成的。 如下方法可以开启增量编译使用默认启用增量编译的 dev 或 test 配置文件进行构建。 设置环境变量 CARGO_INCREMENTAL=1。...设置 Cargo config 文件,启用 build.incremental。 设置 Cargo.toml,启用 incremental。...如果项目中没有调整默认值,那么当运行 cargo build --release 时,或在 release 配置文件中,所有 Rust 1.x 都将禁用增量编译。这些问题,不应该影响你的版本发布。...或者 删除增量编译缓存(例如,运行 cargo clean),或者 通过在环境变量中设置 CARGO_INCREMENTAL=0,或在 config.toml 中指定 build.incremental

96120

Rust的开发环境与工具

当安装完成后, 可使用以下命令进行测试, 如果正确输出版本号则表明安装已经成功. $ rustc --version Tips:如果你使用的是 Linux 系统, 那么在 rustup-init 运行完成后它会在命令行中提示你将软件安装目录加入...你可能会注意到在插件市场中存在一个标了小星星的名字就叫 Rust 的插件, 它的下载量与安装量都远远高于 rust-analyzer, 那么为什么选择使用它呢?...; } 使用如下命令可以编译并运行项目: $ cd rust-learn $ cargo run Compiling rust-learn v0.1.0 (W:\WorkSpace\Rust\rust-learn...test 运行测试用例 cargo check 检查项目代码, 由于 Rust 编译较慢, 因此在开发中常用 check 代替 build 命令 cargo doc 生成项目文档 cargo publish...将库发布到 crates.io 除了以上 cargo 自带的命令外, cargo 还支持安装额外的扩展命令, 例如格式化工具. rustfmt 是一个可以自定义风格的 rust 代码格式化工具, 使用如下命令安装它

96720

Rust crate与模块

我们还将涵盖其他与 Rust crate 的结构和分发有关的主题,包括如何记录与测试 Rust 代码、如何消除不必要的编译器警告、如何使用 Cargo 管理项目依赖项和版本控制、如何在 Rust 的公共...Cargo 清单讲述了如何使用这些信息。运行 cargo build 时,Cargo 首先会从 crates.io 下载这些 crate 的指定版本的源代码。...它会为项目依赖图中的每个 crate 都运行一次 rustcRust 编译器)。编译库时,Cargo使用 --crate-type lib 选项。...但是这种语言更改会破坏任何使用 async 或 await 作为变量名的现有代码。 为了在破坏现有代码的情况下继续演进,Rust使用版本。2015 版 Rust 会与 Rust 1.0 兼容。...2018Rust 将 async 和 await 改为关键字并精简了模块系统, 2021 版 Rust 则提升了数组对人类的友好性,并默认让一些广泛使用的库定义随处可用。

6610

从Rustup出发看看Rust语言的编译生态

Rust和LLVM的关系是怎样的?Rustup中targets是什么,为什么可以安装多个?Rust在windows上为什么需要安装Visual studio?Rust工具链有哪些工具?...Toolchaintoolchain指一组Rust工具,包括编译器(rustc)、构建工具(cargo)、文档生成工具(rustdoc)以及其他与 Rust 相关的实用程序。...rustc: Rust编译器,负责将Rust代码编译为机器码。它是Rust的主要编译器,也是构建Rust程序的关键组件。Cargo: Rust的构建系统和包管理器。...你可以通过查阅Rust官方文档或使用cargo --list命令查看完整的工具列表。...那我们来理一下Rust编译过程你就清楚了。Rust编译器实际上是由多个组件组成的,其中之一是“rustc”做为前端编译器,编译器的后端使用了LLVM。

31110

【投稿】如何制作一个*-sys的crate

这样别的 Rust 程序员就不必为了使用 C 库重新发明 build script 了。 如何做一个 sys crate: 读 Cargo build script 文档。...当你确定了对应的目录,打印 cargo:rustc-link-search=native= 并告知 Cargo使用。...选择静态还是动态链接 你得选择如何链接类库,打印出 cargo:rustc-link-lib= 或者 cargo:rustc-link-lib=static=。...正方: 你只需要照着文档走,就能编译类库,不用过于深入其中。 反方: 如果编译失败,这些额外的间接过程,可能使得更难诊断和修复。在Windows下可能超级难搞、十分痛苦。...交叉编译 Rust 能为当前平台之外的系统构建执行文件和类库,例如:在 macOS 上构建程序,或者在64位系统上构建32位类库。 你的 build.rs 程序可能跑在编译环境之外的平台上。

1.4K40

【社区投稿】给 NdArray 装上 CUDA 的轮子

这里只好采用和 candle 一样的方案,利用 bindgen_cuda 库将 rust 项目 src 下面包括子目录里面的 .cu 文件全部编译打包成一个静态库,然后通过 FFI 编译连接到 rust...接下来介绍一下使用 bindgen_cuda 的步骤: [build-dependencies] bindgen_cuda = "0.1.5" 在项目根目录下面添加 build.rs 文件,加入以下内容...("cargo:rustc-link-lib=stdc++");// .cu 其实是C++, NVCC会调用g++进行编译,所以需要C++标准库 println!...("cargo:rustc-link-lib=cblas");// 这是为了测试 ndarray-linalg 的 dot 函数 } bindgen_cuda 相关的配置和代码完成。...trait 是 rust 非常棒的特性,无需继承,组合等等就可以给已有库增加新的功能。trait 确实是 Rust 类型系统的基石,使得代码更模块化、灵活且易于维护。 核心代码就全部介绍完了。

9510

听GPT 讲Rust Cargo代码(2)

其中之一就是rustc命令,它是基于Rust编译器(rustc)的封装,使得通过Cargo更容易地进行Rust代码编译。...构建逻辑:rustc命令的主要功能是将Rust代码编译为二进制可执行文件或库。这部分代码负责调用Rust编译器(rustc)并传递适当的参数来生成目标文件,并将其整合到最终的构建输出中。...用户可以通过rustc子命令自定义编译选项,并使用Cargo提供的功能来管理依赖关系、版本控制和构建过程。...相对于cargo build命令,cargo check更适用于快速检查代码的正确性和运行时错误,不需要生成最终的可执行文件。...加载并解析工程的配置:使用Cargo库加载并解析Cargo.toml文件,将项目配置信息转换为适合操作的数据结构。 提供和运行检查过程:使用Rustc库调用编译器,运行代码的检查过程。

7310

使用 Rust 编写更快的 React 组件

随着它变得越来越流行,许多语言都编写了编译成 Web 程序集的绑定工具。 为什么Rust Rust 是一个快速、可靠二期又节约内存的编程语言。...cargo 提供了一系列强大的功能,从项目的建立、构建到测试、运行直至部署,为 rust 项目的管理提供尽可能完整的手段。同时,它也与 rust 语言及其编译rustc 本身的各种特性紧密结合。...rustup 将 rustcrust编译器) 和 cargo 等工具安装在 Cargo 的 bin 目录,但这些工具只是 Rust 工具链中组件的代理,真正工作的是工具链中的组件。...它允许开发者直接使用 Rust 的结构体、javascript的类、字符串等类型,不仅仅是 wasm 支持的整数或浮点数类型。.../react_wasm.wasm --out-dir build 执行完成后,编译好的 JavaScript 包和优化好的 Wasm 代码会保存到我们的 build 目录中,以供 React 程序使用

1K40

Rust实战系列-Rust介绍

Cargo Cargo 是一个同时提供项目构建和软件包管理功能的工具。也就是说,Cargo 执行 rustcRust 编译器)将 Rust 代码转换为可执行的二进制文件或共享库。...可以通过 -q(quiet) 来进一步减少输出信息: “严格来说,rustc 才是 Rust 编译器,但我们并没有使用它来编译项目,cargon 代替我们调用 rustc ,简化编译过程。...(需要保证目标文件未被编译,如果已经编译则没有对应输出) rustc:管理 Rust代码编译 rustup:管理 Rust 的安装 5....("a equals ten"); } } 这段代码是不能编译通过(C 语言没有这种能力)的,Rust 编译器会生成错误: if 接收的不是一个整数,它接收的是一个赋值的结果。...cargoRust 程序员提供了这些命令: cargo init:创建一个 Rust 项目框架 cargo build:下载依赖项并编译代码 cargo run:功能与 cargo build 相同

1.3K21

开箱体验Rust,Come on!!!

检查是否安装成功,我们通常都是使用命令能检查到版本视为安装正常,我们这里检查cargo的版本和rustc的版本。...cargo 版本检测:cargo --version rustc 版本检查:rustc --version 认识Cargo: 在我们使用Rustup安装的时候默认就安装了CargoCargo...序号 终端命令 功能 1 cargo new 创建项目并初始化git仓库 2 cargo build 编译项目(debug),增加--release发布构建 3 cargo run 编译项目(未编译或源码有修改...)& 运行项目 4 cargo check 仅检查代码,确保可通过编译,比build速度快 6 cargo publish 发布自定义库 我们可以在crates.io上找到我们需要用到的第三方库,我们也可以将自己编写的自定义库发布到...Rust示例程序: 学会如何导入依赖; 学会如何输出语句使用; 了解什么是可变变量; 了解什么是关联函数; 认识&取地址符;代码详解: 代码详解: // 使用use关键字导入标准库/其他库 use

38620

快速配置 Rust 开发环境并编写一个小应用

如果安装 Rustup 后已有一段时间,那么很可能 Rust 版本已经过时, 运行 rustup update 获取最新版本的 Rust rustc编译Rust程序 rustc只适合简单的Rust...程序,较大型的项目还是推荐使用Cargo CargoRust 的构建工具和包管理器 在安装 Rustup 时, 也会安装 Rust 构建工具和包管理器的最新稳定版,即 Cargo....可以将库发布到 crates.io 要检查否安装了 RustCargo, 可在终端中运行: cargo --version cargo run cargo check cargo build...为 Rust 的清单文件, 包含了项目的元数据和依赖库 src/main.rs 为编写应用代码的地方 进入项目中,执行 cargo run 添加依赖: 在 Rust 中, 通常把包称作 crates...) 然后运行: cargo build Cargo 就会安装该依赖.

26720
领券