首页
学习
活动
专区
圈层
工具
发布

【Rust学习】01_入门

有很多东西要学,但每一段旅程都是从第一步开始的,在本章中,我们将一起来学习以下知识点:在 Linux、macOS 和 Windows 上安装 Rust编写打印程序 Hello, world!...使用 Windows 上的 PowerShell,你将看到与使用 CMD 相同的三个文件。...使用 cargo run 比必须记住运行 cargo build 然后使用二进制文件的整个路径更方便,因此大多数开发人员使用 cargo run 。...让我们回顾一下到目前为止我们对 Cargo 的了解:我们可以使用 cargo new 创建一个项目我们可以使用 cargo build编译一个项目我们可以一步到位地构建 cargo run 和运行一个项目我们可以在不生成二进制文件的情况下构建一个项目来检查错误...这就是为什么有两种不同的配置文件:一种用于开发,当您想要快速且频繁地重建时,另一种用于构建您将提供给用户的最终程序,该程序不会重复重建,并且会尽可能快地运行。

52000

小小白也能用Rust点亮LED,入门嵌入式开发(上)

讲动人的故事,写懂人的代码 "你作为编程新手,为什么要学Rust?"我在微信里问小小白。...这个错误引发了几个值得思考的问题:当我们执行 cargo run 时,Rust工具链是如何知道要运行 probe-rs run --chip nRF52833_xxAA 命令的?...当我们执行 cargo run 时,Rust工具链是如何知道要运行 probe-rs run --chip nRF52833_xxAA 命令的?...运行 cargo run 时,Cargo 不会直接运行生成的二进制文件,而是调用指定的 runner 命令。...尽管这两个接口的设备ID相同,Windows仍将它们识别为不同的设备。 这种设计导致了一个问题:当运行cargo run命令时,probe-rs工具发现两个调试探针却无法自动选择使用哪一个,因此报错。

1.4K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Rust 编译为WebAssembly 在前端项目中使用

    「如果大家对这些概念熟悉,可以直接忽略」 同时,由于阅读我文章的群体有很多,所以有些知识点可能「我视之若珍宝,尔视只如草芥,弃之如敝履」。以下知识点,请「酌情使用」。...这用于编译一个供其他编程语言加载的动态库。此输出类型将在Linux上创建*.so文件,在macOS上创建*.dylib文件,在Windows上创建*.dll文件。...当运行这个命令后,Cargo 会使用 Rust 编译器(Rustc)以及与 WebAssembly 相关的工具链,将 Rust 代码编译为 WebAssembly 格式的二进制文件。...这个生成的 Wasm 文件可以在浏览器中运行,或与其他支持 WebAssembly 的环境一起使用。...如果只是传递一个简单的字符串,我们可能可以自己处理,但考虑到当涉及到更复杂的对象和结构时,这个工作会很快变得非常复杂。

    1.5K21

    Rust 开发命令行工具(中)

    当文件超出作用域时(在函数的末尾),实际的临时文件将自动被删除。...与库不同,cargo会在运行cargo build(或类似的命令)时为我们下载和编译库,我们需要明确告诉它要安装二进制文件。 使用cargo install 可以实现这一点。...当我们在包含名为f789的二进制文件的项目上运行cargo build时,我们将得到一个名为f789的二进制文件。...如果我们在Windows计算机上运行cargo build,我们不会得到默认情况下在Mac上运行的二进制文件。...这基本上是「在虚拟机中每次我们推送更改到我们的存储库时运行设置命令」。这些命令是什么以及它们运行在哪种类型的机器上是可配置的。 我们还可以使用此功能构建二进制文件并将其上传到GitHub!

    72120

    【Rust学习】02_猜谜游戏

    ;}现在让我们一起来使用cargo run来运行这个程序:$ cargo run Compiling guessing_game v0.1.0 (/Users/wangyang/Documents/...,但在这个例子中,我们只希望程序在出现问题时立即崩溃,因此我们可以直接使用 expect打印值很好,现在我们终于来到了最后一行代码,呼呼!...当您第一次构建项目时,Cargo 会找出符合条件的所有依赖项版本,然后将它们写入 Cargo.lock 文件。...当您将来构建项目时,Cargo 将看到 Cargo.lock 文件存在,并将使用其中指定的版本,而不是再次执行找出版本的所有工作。这使您可以自动获得可重现的构建。...由于 Cargo.lock 文件对于可重现的构建非常重要,因此它通常与项目中的其余代码一起签入源代码管理。

    46810

    Rust 开发命令行工具(上)

    「如果大家对这些概念熟悉,可以直接忽略」 同时,由于阅读我文章的群体有很多,所以有些知识点可能「我视之若珍宝,尔视只如草芥,弃之如敝履」。以下知识点,请「酌情使用」。...我们可以在使用cargo run时通过在--后面写参数来传递参数: $ cargo run -- some-pattern some-file Finished dev [unoptimized...在主函数中时,得到的错误是可以接受的,但不是很好。例如:当我们运行std::fs::read_to_string("test.txt")?...run --bin output-log 在 Windows PowerShell 中,你可以这样运行: $ $env:RUST_LOG="info" $ cargo run --bin output-log...在 Windows CMD 中,你可以这样运行: $ set RUST_LOG=info $ cargo run --bin output-log 上面的代码是在运行 Rust 项目中的二进制文件

    1.4K40

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

    如果你想要从源码编译成类库,可以把源码和 Cargo crate 一起打包。 Cargo 的构建过程应该是自我完备的且可离线工作。...在没有安装 Homebrew 和 相同版本类库的其他设备上会报错崩溃。所以当你使用 pkg-config 的时候,默认静态链接吧。 在 Windows 上,则有 vcpkg,但是它大多不可用。...当发布到 crates.io 时,cargo 会把它们当成普通文件夹一样自动复制,所以你 crate 的用户甚至不会察觉这个源代码是一个 submodule。...唯一的例外是 cfg(feature = "…") 检查,这是 Cargo 内建功能,可以在交叉编译时安全使用。 pkg-config 在检测到交叉编译时会能自动辅助(环境变量中 HOST !...链接器通常很”懒惰“,意味着它检测不到类库的啥问题,但当你在 Rust 中实际用它时则“惊喜”不断。

    1.8K40

    Rust跨平台编译

    A同学用Mac构建了一个工具,但是她想让B同学在Windows环境上使用。此时就会发生问题,我们都知道Windows和Mac由于系统架构的不同,在它们环境下编译的二进制文件是「不互通」的。...「编译时单元测试」Rust 的单元测试在编译时就运行,可以确保在发布时,程序在不同平台上的行为是一致的。...(COMPILED_ON, CURRENT_PLATFORM); } } 请注意,这是一个我们期望在Mac上运行时通过的测试,但当我们跨编译到Windows并在那里运行时将会失败。...我们在Mac上运行cargo test,会得到这样的输出: 要在Windows上运行测试,语法与运行可执行文件非常相似: cross test --target x86_64-pc-windows-gnu...在Mac上运行cargo run会得到以下输出: 如我们所见,上面的输出没有Windows特定的消息。

    2K10

    使用 Rust 编写更快的 React 组件

    Wasm 在开始之前,我们还是先来回顾下 Wasm: WebAssembly 是一种二进制指令格式,简称为 Wasm,它可以运行在适用于堆栈的虚拟机上。...最小的运行时(无停止世界的垃圾搜集器,无 JIT 编译器,无 VM) 低内存占用(程序可以运行在资源受限的环境,比如小的微控制器) 针对裸机(比如,写一个 OS 内核或者设备驱动,把 Rust 当一个...cargo 提供了一系列强大的功能,从项目的建立、构建到测试、运行直至部署,为 rust 项目的管理提供尽可能完整的手段。同时,它也与 rust 语言及其编译器 rustc 本身的各种特性紧密结合。...rustup 将 rustc(rust编译器) 和 cargo 等工具安装在 Cargo 的 bin 目录,但这些工具只是 Rust 工具链中组件的代理,真正工作的是工具链中的组件。...一起来做个 Demo 在开始之前,要确保你的电脑上已经安装了 Node 和 Rust,可以在命令行分别输入 npm、rustup 看看能否找到命令,如果没安装的话自己先安装一下。

    1.5K40

    第1章Hello world 35:Cargo.lock:确保构建稳定可靠:运行第一个程序

    贾克强:“对的,Cargo.lock文件得提交到版本库,让我们的构建更稳定和可靠。” “就像咱们程序员最怕的那种情况,明明在自己这儿代码运行得好好的,但怎么在测试环境就犯傻了。”...你刚才运行的cargo run命令呀。“ ”它会先执行cargo build来编译你的项目。如果编译成功,cargo run接着就会运行编译后的二进制文件。”...“ “每当我们运行cargo build、cargo update等命令时,Cargo会读取Cargo.toml,就像查看我们的购物清单,然后更新Cargo.lock。”...“ ”虽然Maven没有直接类似于Cargo.lock的文件,但我们可以在pom.xml中明确所有版本,并利用来锁定它们。”...“在CMake的项目里,你可以在CMakeLists.txt文件中包含Conan的配置,然后通过链接Conan管理的库来构建应用程序。”

    31143

    – Rust编译速度问题研究

    我知道修复这个问题很困难,但编译器离良好的生产力要求还差得很远,” Python Flask的创始人Armin Ronacher在X(以前被称为Twitter的平台)上写道。...“最令人沮丧的一件事情之一是,当你作为程序员真的觉得Rust正在做一些它不需要做的工作时,” Cantrill说道。 因此,公司让工程师们努力找出为什么Rust应用程序需要这么长时间的问题。...有很多不同的答案,” 他说。 诸如 cargo-llvm-lines 或 cargo-bloat 这样的工具可以显示生成的二进制文件为什么具有特定的大小,但这些测量只是估算编译时间本身的代理。...如果在应用程序的多个地方使用了一个小的通用函数,Rust 将为每种具体情况编译该通用函数。结果是:程序运行快,编译时间慢。...该 crate 指定了程序中处处使用的所有功能的联合,因此它们只会被编译一次,而不是多次。 他们发现 cargo-hakari 在一定程度上减少了构建时间... 但并非完全解决。

    56710

    Rust 与 Java 的区别

    本文将从 语法对比、项目结构、编译方式、运行与部署 四个方面,全面解析 Rust 与 Java 的区别,并介绍 Rust 的完整开发流程。...四、Rust 如何运行与部署 1. 运行方式 # 开发时 cargo run # 直接运行编译后的文件 ./target/debug/my-app ....部署方式(核心优势) ✅ 优势:零依赖部署 编译后是一个独立的可执行文件 无需安装 Rust、JVM、Python 等运行时 可直接复制到任意相同架构的 Linux/Windows 机器运行 示例部署流程...在服务器运行 /opt/my-app/my-app ⚠️ 注意事项: 目标机器架构需匹配:如编译为 x86_64-unknown-linux-gnu,不能在 ARM 上运行 可使用交叉编译: # 安装交叉编译目标...动态链接(可选):可通过配置使用动态链接,减小体积 五、Rust vs Java:部署对比 项目 Rust Java 部署文件 单个二进制文件(~5-20MB) .jar 文件 + JVM 运行时依赖

    24900

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

    ; } 编译与运行 编译:rustc main.rs 运行: Windows:.\main.exe Linux/Mac:....的参数 这行代码以 ; 结尾 编译和运行时单独的两步 运行 Rust 程序之前必须先编译,命令为:rustc 源文件名 编译成功后,会生成一个二进制文件 在 Windows 上还会生成一个 .pdb...edition:使用的 Rust 版本 [dependencies]:另一个区域的开始,它会列出项目的依赖项。...源代码都应该在 src 目录下 顶层目录可以放置:README、许可信息、配置文件和其他与程序源码无关的文件 如果创建项目时没有使用 cargo,也可以把项目转化为使用 cargo: 把源代码文件移动到...Cargo 项目 cargo run cargo run:编译代码 + 执行结果 如果之前编译成功过,且源码没有改变,那么就会直接运行二进制文件 xinggongwuyue@DioxideCN-MacBook-Air

    54710

    Rust 写脚手架,Clap你应该知道的二三事

    当我们创建一个前端项目时,是不是会遇到下面的步骤。 npm init yarn add xx 项目实现 和前端开发类似,当我们把包下载到本地后,我们就需要在对应的入口文件中引入并执行。...最后,我们可以通过cargo run -- --help来查看对应的信息。 总的来说,这段代码使用 clap 库定义了一个命令行应用程序,它接受一个名为 name 的字符串参数。...当运行这个应用程序时,它会打印出 "Hello, {name}"。#[derive(Parser)] 和 #[command(...)]...如果你尝试运行 cargo run front789,它应该会打印出 Hello, front789! 但如果尝试不添加任何额外值运行它,它将打印出帮助菜单。...("我是{},来自:{}", name,address); }, _=>(), } } 当我们运行cargo run create时,由于我们提供了默认值,在控制台就会输出对应的信息

    70310

    小小白也能用Rust点亮LED,入门嵌入式开发(下)

    这个文件有两个显著特征:它会精确记录项目中所有直接和间接依赖的具体版本号,确保构建环境的一致性;同时它是完全自动化的,Cargo 会根据 Cargo.toml 的内容自动更新它。...当依赖项发布修复版本时,你需要手动运行 cargo update 来更新。在多人开发时,如果大家都更新了依赖,可能导致文件合并冲突。...如果你在开发应用程序,尤其是需要团队协作或持续集成的项目,就应该将它纳入版本控制。但开发代码库时通常不建议提交 Cargo.lock,因为库的依赖版本应由最终应用决定。...当配置出现问题时,排查可能比较困难,特别是在跨平台或嵌入式开发中。此外,使用probe-rs等外部工具时需要额外安装和学习。 这个配置文件适用于多种场景。...虽然嵌入式开发常常需要直接操作硬件,但Rust提供了安全的封装,让我们无需直接处理那些危险的底层操作。 接着,你会发现这个程序与普通电脑程序不同。它使用了#!

    64710

    Rust高级特性:集合类型、错误处理与模块化编程

    宏) 不可恢复错误是指那些严重到无法继续执行程序的错误,如内存不足、索引越界等。在Rust中,我们可以使用panic!宏来处理不可恢复错误,它会导致程序崩溃(panic)并输出错误信息。...("crash and burn"); 当程序运行到这一行时,会输出错误信息"crash and burn",然后崩溃。 6.2 获得更好的错误信息 当程序因为panic!...而崩溃时,我们可以通过设置RUST_BACKTRACE环境变量来获得更详细的错误信息,包括函数调用栈: RUST_BACKTRACE=1 cargo run 这将输出函数调用栈的信息,帮助我们定位错误发生的位置...expect方法与unwrap方法类似,但允许我们指定一个自定义的错误信息。 这些方法在快速原型开发或测试时非常有用,但在生产代码中,我们通常应该使用更明确的错误处理方式。 8....例如,当我们将一个值添加到集合中时,集合通常会获得这个值的所有权;当我们从集合中获取一个值的引用时,需要遵守借用规则。 为什么Rust有两种错误处理机制(panic!和Result)?

    21610

    【Rust学习】17_常见集合_向量

    与内置的数组和元组类型不同,这些集合指向的数据存储在堆上,这意味着数据的数量不需要在编译时知道,并且可以在程序运行时增长或缩小。...向量允许你在单个数据结构中存储多个值,这些值在内存中彼此相邻。向量只能存储相同类型的值。当您有项目列表时,例如文件中的文本行或购物车中项目的价格,它们非常有用。...现在,请知道标准库提供的 Vec 类型可以容纳任何类型。当我们创建一个向量来保存特定类型时,我们可以在尖括号内指定类型。如上所示,我们告诉 Rust,Vec 将保存 i32 类型的元素。...当我们使用 get方法并将索引作为参数传递时,我们会得到一个 Option 我们可以将其与 match 一起使用。现在我们知道了读取向量的两种方法,那么如果我们尝试访问范围外的元素会怎么样呢?...幸运的是,枚举的成员是在相同的枚举类型下定义的,所以当我们需要一个类型来表示不同类型的元素时,我们可以定义并使用枚举!

    41310

    第2章 | Rust 导览

    第 8 章会详细介绍 Cargo.toml 文件。 Cargo 已将我们的包设置为与版本控制系统 git一起使用,并为此创建了一个元数据子目录 .git 和一个 .gitignore 文件。...可以在包内的任意目录下调用 cargo run命令来构建和运行程序: $ cargo run Compiling hello v0.1.0 (/home/jimb/rust/hello)...1“生成”只是沿袭普遍译法,事实上,这里并不会创建任何新条目,只是把已有条目提供给消费者。——译者注 除了与 for 循环一起使用,迭代器还包含大量可以直接使用的方法。...crates.io 上这些 crate 的版本很可能比此处展示的版本新,但通过指明在测试此代码时所使用的特定版本,可以确保即使发布了新版本的包,这些代码仍然能继续编译。...编写完 main.rs 后,可以使用 cargo run 命令来执行为运行它而要做的一切工作:获取所需的 crate、编译它们、构建我们自己的程序、将所有内容链接在一起,最后启动 main.rs。

    50010

    一起长锈:2 什么神器能确保Rust构建稳定可靠?(从Java与C++转Rust之旅)

    贾克强:“对的,Cargo.lock文件得提交到版本库,让我们的构建更稳定和可靠。” “就像咱们程序员最怕的那种情况,明明在自己这儿代码运行得好好的,但怎么在测试环境就犯傻了。”...“当你运行 cargo build 时,Cargo 会查看一下 Cargo.toml 文件,看看哪个版本的依赖项最合适。” “然后它会把这些版本写入 Cargo.lock 文件。...你们刚才运行的cargo run命令呀。“ ”它会先执行cargo build来编译你的项目。如果编译成功,cargo run接着就会运行编译后的二进制文件。”...“在CMake的项目里,你可以在CMakeLists.txt文件中包含Conan的配置,然后通过链接Conan管理的库来构建应用程序。”...Gradle 4.8+可以生成一个锁文件。 C++ Conan conan.lock 锁定依赖版本。与CMake一起管理依赖和版本。

    56953
    领券