![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rust
文章平均质量分 91
老父亲的能量嘎嘣脆
创造幸福如同理财,让大家变得更幸福的新产品孵化ing。
积极心理学+中国智慧+AI改变世界践行者
能写诗能撸铁的ENTJ
展开
-
2024 年 Rust 开发者路线图
要构建交互式且引人入胜的 Web 应用程序,开发人员应该探索 Rust 的前端开发功能。在 github 上发现了这个优秀的路线图,由 Anshul Goyal 创建,它提供了一条全面的路径,概述了精通 Rust Web 开发所需的基本技能和工具。每个里程碑都建立在前一个里程碑的基础上,为开发人员提供使用 Rust 构建安全、高性能和可扩展的 Web 应用程序所需的知识和工具。总之,Rust 开发者路线图对于希望在 Web 开发项目中利用 Rust 强大功能的有抱负的 Web 开发人员来说是宝贵的资源。原创 2024-04-24 11:16:35 · 1374 阅读 · 3 评论 -
Rust 再次被选中以节省成本!Rust 取代了 Python,将 Amazon Cloud 成本削减了 75%!
AWS Lambda还有一个实验性的Rust运行时,简化了Rust中的运行时功能,包括支持Lambda事件、扩展和Lambda运行时API的crate。对于1GB的RAM,Rust和Boto3代码具有类似的性能,但对于256MB的RAM,增强的Rust版本仍然表现良好,而另一个则没有。根据亚马逊员工在某个专业社交平台上的反馈,“这里的每个人都在使用Rust”,还有用户指出,Rust编译器团队的负责人Jon Gjergarten也受雇于亚马逊。闪电般快速的执行:Rust是一种以其卓越的性能而闻名的编译语言。原创 2024-04-05 10:00:00 · 1788 阅读 · 1 评论 -
你想不到rust能比Dart、JavaScript快多少?
虽然Dart不是市场上最快的语言,但我很欣赏它冷静而干净的语法。因此,我比较了Dart、JavaScript和Rust的速度。我编写了一个小的PowerShell脚本来运行每个程序10次,并给予每次执行的时间,同时计算平均执行时间。我试图在每个基准测试上保持环境相对相似,并运行了3次基准测试,以确保数字相似,没有大的差距。但在我的速度测试中,结果真的让我大吃一惊。如果你只关注JavaScript和Dart,Dart看起来是比较快了。正如你所看到的,它是相同的代码,只是在语言之间翻译。Results 结果。原创 2024-04-07 09:00:00 · 1264 阅读 · 0 评论 -
作为前端TypeScript开发人员学习Rust的经验
在小范围内,这几乎没有什么区别。也就是说,Rust的类型系统中对我来说是新的部分并不是Rust独有的,而是几乎所有低级语言的特性。总之,这些功能帮助我们安全有效地控制内存,正因为如此,Rust不需要依赖垃圾收集器,允许我们解锁更高级别的性能,而没有像C这样的语言的风险,这给开发人员带来了更大的责任来理解他们在做什么!该语言承诺与C和C++相同的运行时性能,但具有严格的类型系统,大量的内存安全功能和更主动的错误处理方法-这样您就可以避免垃圾收集器的开销,安全地避免内存泄漏的风险,这在C等语言中更容易创建。原创 2024-04-11 08:00:00 · 1186 阅读 · 2 评论 -
Rust中的智能指针
智能指针是一种数据结构,它不仅管理内存资源,还具有额外的元数据和功能。与C++等语言中的传统指针不同,Rust的智能指针不仅仅是内存地址;它们是数据结构,不仅包含指向数据的指针,还包含额外的元数据和功能。在Rust中使用智能指针是一个取决于理解其功能和用例需求的决定。本文深入研究了Rust的智能指针,通过大量的代码示例展示了它们的用法,并以创建自定义智能指针的示例作为结束。就像一个智能指针,管理其数据的所有权并提供解引用功能。的每个克隆都会增加引用计数。,引用计数的缩写,允许堆上相同数据的多个所有者。原创 2024-04-12 08:00:00 · 1518 阅读 · 2 评论 -
在 Rust 中实现零知识多方计算
此代码片段建立与验证器的连接(假设正在侦听端口 7879),将交易哈希值和证明打包到 JSON 对象中,将其序列化,然后通过 TCP 流发送。验证涉及将接收到的哈希(响应)与交易摘要中的预期哈希进行比较。该系统涉及三个主要组件:用于提交交易的用户界面、用于批量交易并生成证明的证明器(或操作器)以及检查这些证明的验证器(类似于主网)。该循环侦听来自证明器的连接并读取传输的 JSON 数据,其中包括交易哈希值和生成的证明。当验证器运行时,启动证明器,它聚合来自用户的交易,生成证明,并与验证器交互以进行验证。原创 2024-04-21 07:00:00 · 1166 阅读 · 0 评论 -
使用 Rust 和 DDD 构建 API 服务器
通过依赖抽象而不是具体实现,应用程序层保持与基础设施层的解耦。虽然 Rust 在商业中的采用率仍然相对较低,但我相信它将获得牵引力,尤其是在后端开发方面。在应用程序层,我们使用实体和值对象来实现用例并将处理委托给存储库(基础设施层)。在这种情况下,我们将实现创建圆圈的用例。在本例中,我们将数据存储在内存中。需要注意的是,基础设施层不依赖于应用程序层。在这里,我们使用抽象(特征)而不是具体实现来注入依赖项,遵循依赖倒置原则。方法将这些数据库类型转换为域层类型,从而使我们能够将应用程序层与基础设施层解耦。原创 2024-04-16 07:30:00 · 735 阅读 · 1 评论 -
使用 Rust 后,我使用 Python 的方式发生了变化
为了找到这些问题的答案,我要么必须阅读函数的主体(并且通常递归地阅读它调用的其他函数的主体,这非常烦人),要么我只能阅读它的文档(如果有的话)。然而,在体验了 Rust 类型系统的严格性,并注意到它“通过构造”防止的所有问题之后,每当我返回 Python 时,我都会突然变得相当焦虑,因为我没有得到同样的保证。根据我的经验,这种情况并不经常发生,如果发生的话,它实际上可能表明你的代码有问题 - 如果你的函数参数可以是数字和字符串或字符的元组将字符串映射到整数的字典,它可能意味着您需要重构和简化它。原创 2024-04-20 14:43:36 · 1009 阅读 · 2 评论 -
Rust的魅力,对于Go新手来说还挺不错的
记录当前线程的ID,或者在Go的情况下,记录goroutine ID,非常有用。它们来自工作中的真实的实例,在这些实例中,Go的局限性阻止了我实现所需的解决方案。Rust通过在编译时而不是运行时检测错误来确保可靠性,提供性能,并具有一定程度的表达能力,让我编写其他语言无法编写的代码。P.s.看到作者的这篇文章时,有感受到她在过程中的思考,我自己编写的项目也借此有了一些新的进展,翻译分享给大家。Rust在一个select语句中表达了Go需要N个select语句的情况,其中N是要优先考虑的情况的数量。原创 2024-04-08 08:30:00 · 884 阅读 · 0 评论 -
Rust教程:贪吃蛇游戏(第 1/2 部分)
在本教程中,我们探索了如何使用 Rust 创建贪吃蛇游戏,重点介绍了游戏环境的设置以及蛇、苹果、墙壁和游戏板等关键组件的初始化。例如,如果它向左移动,而我按了右键,它就无法后退,这会导致游戏进入失败状态,因为蛇实际上无法触及自己。另外,如果蛇撞到墙上,它就会死。好吧,各位,由于本文太长并且有点难以管理,而且坦率地说,我们还有更多步骤和概念要介绍,我将创建第 2 部分,我们将在其中完成。,它将接受一个 i32 的游戏坐标,然后我们想要返回一个 f64。唯一真正的区别是,我们将块大小乘以宽度,将其转换为。原创 2024-05-07 11:05:11 · 1207 阅读 · 0 评论 -
Rust教程:贪吃蛇游戏(第 2/2 部分)
如果尾部和头部在同一个块中重叠,实际上有一段时间头部将在该块中,尾部也会在该块中,我们不希望这导致失败状态,所以我们。因此,如果我们吃一个苹果,该方法将运行,并且尾部将被推入我们的链表主体中。,因为它允许我们创建一个线程本地随机数生成器(这样我们就可以使用我们的操作系统来创建一个随机数)。我们还将创建一个基于我们的尾巴的块。(显然,您可以将其设置为您想要的任何值)更喜欢),然后我们将创建一个可变窗口,它将是。我们将检查蛇是否还活着,如果是的话我们将< b6> 并检查是否吃东西,如果不是,则。原创 2024-05-07 11:11:12 · 1165 阅读 · 0 评论 -
学习Rust的第29天: cat in Rust
否则,假设提供了文件名,并且它将继续读取和打印这些文件的内容,当前将其作为注释保留。函数将命令行参数收集到字符串向量中,删除第一个参数(程序名称本身),然后。方法当前留空,可能会被实现来读取和打印指定文件的内容。方法读取由名称指定的文件的内容并将其作为 a 返回。它首先检查是否没有提供文件名,在这种情况下它调用。它检查是否没有提供文件名,在这种情况下它调用。文件名中是否存在该标志,如果存在,则调用该。文件名中是否存在该标志,如果存在,则调用该。否则,它会迭代每个文件名,使用 读取其内容。原创 2024-05-06 09:00:00 · 1408 阅读 · 1 评论 -
学习Rust的第28天:rm in Rust
过去几天以来,我们一直在 Rust 中重新创建 GNU 核心实用程序的基本功能,今天我们构建了另一个工具,用于从文件系统中删除文件和目录。则打印帮助信息,否则迭代提供的路径以执行删除操作(当前未实现)。箱的一个非常易于使用的功能,如果指定的路径是目录,则使用。这就是我们所要做的,让我们测试一下,看看它是如何工作的。如果它是一个目录,它会使用。run() :执行逻辑和错误处理,调用其他函数。如果路径不是目录(可能是文件),它会尝试使用。它检查是否有足够的参数,如果提供了。,否则传播任何遇到的 IO 错误。原创 2024-05-06 07:30:00 · 871 阅读 · 1 评论 -
学习Rust的第27天:Rust中的pwd
过去几天我们一直在重新创建 GNU 核心实用程序的基本功能,而今天,我们将做一些有点太简单的事情,函数毫无困难地重新创建它,让我们在新的 Rust 项目中创建一个库箱和一个模块来开始使用它。失败,则执行此分支,打印一条错误消息,指示发生应用程序错误。的函数,该函数返回一个结果,其中包含表示当前工作目录的。是我们当前所在的目录,在 Linux Shell 中。模块,该模块提供与当前进程的环境变量交互的函数。模块中的一个函数,它返回表示当前工作目录的。的模块,可以从其他模块访问该模块。原创 2024-05-05 07:15:00 · 871 阅读 · 0 评论 -
学习Rust的第26天:Rust中的cp
看起来很简单,我们将创建一个 lib.rs 并像昨天一样执行基本设置任务。代码将与前文代码保持相似,我们只会更改程序的核心功能和一些变量名称以匹配用例。),并将子目录的路径作为新的源,并将目标与当前条目的名称连接起来。实用程序的功能,我想默认使其递归,因为每次我想复制时都输入。此行解开目录条目迭代的结果,处理可能发生的任何潜在错误。这就是我们需要做的所有设置任务,现在创建一个复制功能,如果当前条目不是目录(即,它是文件),则执行此块。结构表示文件系统路径,用于操作和使用文件路径。原创 2024-05-04 07:30:00 · 899 阅读 · 0 评论 -
学习Rust的第25天:Rust中的mkdir
好吧,看起来很简单,让我们从新的货物库箱开始,创建一个简单的结构体和一个。函数,它引用 self 并根据我们在伪代码中指定的条件调用我们的私有函数。否则,它会迭代提供的目录名称,尝试创建每个目录并打印遇到的任何错误。现在我们已经拥有了制作目录所需的一切,那么让我们制作一个目录吧?如果没有提供目录名称作为参数,则将错误消息打印到标准错误。现在基础知识已经设置完毕,我们将创建一个二进制板条箱,函数创建由输入字符串指定的目录。创建私有函数,让我们的工作变得更容易一些。指示成功或失败,到目前为止,这是我们的。原创 2024-05-03 07:00:00 · 1058 阅读 · 1 评论 -
学习Rust的第24天:在Rust中构建ls
现在让我们开始实际获取文件并将其打印出来的主要逻辑,如果用户没有传入任何我们想要索引当前文件夹的数据的参数,我们可以通过导入。虽然这可行,但如果我传递一个不存在的目录名称,程序就会出现恐慌,这不太令人愉快。由于它是一个引用,因此必须指定它的生命周期,因为 Rust 需要确保该引用的生命周期至少与保存它的。结构体并不拥有它引用的数据,而只是借用它,并且它受生命周期。是我的板条箱的名称,请使用您的板条箱的名称来代替......) 的引用的生命周期。现在我们对必须构建的内容有了基本的了解,让我们开始吧?原创 2024-05-02 07:30:00 · 43 阅读 · 2 评论 -
学习Rust的第23天:闭包
Rust 闭包提供了简洁、富有表现力的匿名函数来捕获周围的变量。从本质上讲,闭包是 Rust 的基础,可以提高代码的清晰度和简洁性。在 Rust 中,闭包是可以从周围环境捕获变量的匿名函数。Rust 中的闭包具有灵活而强大的语法,允许它们在各种上下文中使用。闭包执行后,捕获的变量将移至闭包中,并且无法再在外部作用域中访问。此特性适用于需要使用捕获的变量、将所有权转移给闭包的闭包。用法示例:使用捕获变量的函数,例如移动语义中使用的闭包。捕获的变量仍然可以访问,并且可以在闭包执行后使用。原创 2024-05-01 07:00:00 · 1335 阅读 · 0 评论 -
学习Rust的第22天:mini_grep第2部分
书接上文,在本文中,我们学习了如何通过将 Rust 程序的逻辑移至单独的库箱中并采用测试驱动开发 (TDD) 实践来重构 Rust 程序。相反,它返回一个空结果向量,从而表明它没有存储与不区分大小写的查询匹配的原始行。文件目前有点臃肿,我们所有的逻辑都存储在一个地方,为了解决这种情况,我们可以创建一个库板条箱并将所有逻辑存储在那里,我们的。请记住,默认情况下,rust 中的所有内容都是私有的,这就是我们可以使用。将查询和行转换为小写后,它检查该行的小写版本是否包含查询的小写版本。文件中,所以让我们开始吧。原创 2024-04-30 07:00:00 · 852 阅读 · 0 评论 -
学习Rust的第21天:mini_grep第1部分
我们的 main 函数目前有很多职责,所以今天我们将把它分成函数和结构体,剩下的在明天的文章中完成。我们涵盖了读取命令行参数、读取文件内容,并开始通过将程序构造为函数和结构体来重构程序。这里我们并不真正关心二进制路径,我们只需要这个向量的最后两个元素。为了阅读,首先让我们在板条箱的根目录中创建一个文件,我将其命名为。现在我们已经有了程序设置的基础知识,让我们重构程序......正如你所看到的,我们得到了传递到项目中的参数。:提供与进程交互的功能(例如,退出进程)。方法,这将返回一个我们可以使用的迭代器。原创 2024-04-29 07:15:00 · 596 阅读 · 0 评论 -
学习Rust的第20天:运行测试
特性,顾名思义,它告诉rust编译器忽略特定的测试,我们有一些命令行参数,我们可以使用它们来运行被忽略的测试或包含被忽略的测试,但是考虑到这是一个你必须完成的任务,这将帮助你在阅读手册时更好地理解。一般来说,我们可能不想这样做,因为这会使我们的测试运行得更慢,但是如果有测试修改了环境变量或文件,测试可能会同时尝试修改实体,这可能会导致潜在的失败。一般来说,每个测试都有自己的线程来运行,但是如果我们想一个接一个地运行测试(串行地),我们会使用。的测试,要运行这两个测试,我可以使用以下命令。原创 2024-04-28 07:00:00 · 817 阅读 · 1 评论 -
学习Rust的第19天:编写测试
Rust中的测试涉及编写专门设计的代码,以验证其他代码是否按预期工作。它很重要,因为它有助于通过在开发过程的早期检测错误,回归和边缘情况来确保Rust程序的可靠性,正确性和健壮性。要开始测试,我们需要创建一个库crate,我们可以通过运行以下命令来完成。创建一个新的库crate,可以参考第11天的lib.rs文件。In thelib.rs在lib.rs文件中,我们已经有了一个预先编写的测试,让我们分解它以更好地理解它。The。原创 2024-04-27 07:30:00 · 972 阅读 · 0 评论 -
学习Rust的第18天:Lifetime
在本文中探讨了Rust生命周期中的关键概念,包括基础知识、借用检查器、通用生命周期注释、生命周期省略规则、结构中的注释和静态生命周期。Rust中的泛型生命周期注释允许函数接受具有任何生命周期的参数,从而在处理具有不同生命周期的引用时提供灵活性。在Rust的生命周期省略规则中,输出生命周期是根据输入生命周期和函数或方法参数的结构来推断的。结构中的生存期注释允许在结构字段中指定引用的生存期,确保它们遵守Rust的所有权规则。在Rust的生存期省略规则中,输入生存期用于推断从函数返回的引用的生存期。原创 2024-04-26 07:00:00 · 732 阅读 · 0 评论 -
学习Rust的第17天:Traits
Rust traits,包括自定义trait声明,trait边界,实现trait的返回类型,条件方法实现和blanket实现。在Rust中,trait bounds用于将泛型类型限制为实现某些trait的类型。Rust 中的 taits 定义了一组类型可以实现的行为,从而实现多态性和代码可重用性。Rust中的Blanket实现允许您为满足某些条件的所有类型实现trait,同时为多个类型的trait提供默认实现。这个函数返回任何实现Sound trait的实例,到目前为止,我们通过这个函数返回。原创 2024-04-25 09:00:22 · 1089 阅读 · 0 评论 -
学习Rust的第16天:泛型类型
泛型类型是减少代码重复的好方法,因此它们对性能有巨大的影响,通过利用Rust中的泛型类型,开发人员可以编写更通用和可重用的代码,同时保持类型安全和性能。Rust中的泛型类型允许您编写可以对多种数据类型进行操作的函数,结构和枚举,而不会牺牲类型安全性,从而实现代码重用和灵活性。是Rust中的一个trait,它定义了相同类型的值之间的偏序关系(小于,小于或等于,大于,大于或等于)。让我们来看看一个更复杂的例子,我们在out Point结构中有两个泛型,并理解混合它们的必要性。这里有一个我通常会使用的结构。原创 2024-04-23 11:26:41 · 638 阅读 · 0 评论 -
学习Rust的第15天:错误处理
Rust有各种错误管理功能,包括用于故意程序崩溃的panic宏,用于描述操作结果的Result枚举,以及简单错误传播的操作符。它鼓励集中的错误处理,允许在整个程序中使用统一的策略,并通过提供有关问题原因的上下文信息来改进调试。枚举通过提供一种表示操作成功或失败的方法来简化错误处理,例如,如果文件不存在,则打开文件可能会失败,这将导致错误。错误处理基本上意味着如何处理某些情况下,这是不是最佳的为您的程序的工作,有一些优雅的可删除的错误。,这使程序崩溃,我们可以清楚地通过使用回溯跟踪来跟踪代码中发生的事情。原创 2024-04-24 07:15:00 · 917 阅读 · 0 评论 -
学习Rust的第14天:HashMaps
通过一个计算单词出现次数的实际例子,我们展示了它们在现实世界中的实用性。Hashmaps提供了一种灵活而强大的组织和访问数据的方法,使其成为Rust编程中不可或缺的工具。存在,这行代码将不会对散列表进行任何更改,但如果它不存在,它将创建一个类似于以下内容的键值对。的新条目,如果这个单词在hashmap中不存在的话。给了我们一个条目枚举,它表示我们在括号中提供的值。来覆盖输入文本中的每个单词,它基于空格将文本拆分为单词。方法访问hashmap中的值,该方法返回。方法,如果键-值对不存在,则插入键-值对。原创 2024-04-23 07:30:00 · 1071 阅读 · 1 评论 -
学习Rust的第13天:Strings
与ASCII不同,它使用每个字符8位,Rust的Unicode标准可以使用一到四个字节。这些帮助准确地处理字符,即使是在印地语,日语,俄语或任何其他不使用拉丁字母的语言中。ASCII将每个英文字符分配给一个数字,我们可以用二进制表示一个数字,因此我们可以将该数字的二进制存储在内存中,当我们需要特定的字符串时,我们可以使用ASCII将其转换回来。我们上面遇到的问题通过石墨烯簇解决了,但是,这不包括在rust标准库中,所以我们必须安装一个板条箱。在Rust中,它远不止于此,Python是它的一个更简化的版本。原创 2024-04-22 07:30:00 · 669 阅读 · 0 评论 -
学习Rust的第12天:Vectors
向量在Rust中的各种编程任务中起着至关重要的作用。像rust这样的系统编程语言以强调安全性和性能而闻名,因此vectors提供了一些强大的功能来管理动态数据集合。:这一行创建了一个新的变量,并使用包含整数1、2、3、4、5和6的向量对其进行了重命名。向量可以根据需要增长和收缩,使其成为处理大小可能在运行时更改的元素集合的通用选项。让我们用一个简单的例子来演示向量的用法。然后将元素一个接一个地推入其中相比,这是一种更简洁的创建向量的方式。与数组不同,向量的大小是动态的。Introduction 介绍。原创 2024-04-21 07:30:00 · 1048 阅读 · 0 评论 -
学习Rust的第11天:模块系统
相对路径指的是在不指定根的情况下访问同一模块层次结构中的模块或项目,而绝对路径指的是通过指定根模块或crate来访问它们。在Rust中,模块系统通过将相关的函数、类型和其他项分组在一起来帮助组织代码,从而更容易在项目中管理和重用代码。为了更好地跟踪我们的项目并更好地构建它,我们可以将不同的模块存储在单独的文件中。这样做的目的是,编译器查找与模块名称同名的文件,并将所有函数和其他数据放入模块中。今天我们来看看Rust的模块系统。一个模块里面可以有多个模块,我们可以在一个模块里面定义,结构,枚举,函数等等。原创 2024-04-20 07:15:00 · 1153 阅读 · 0 评论 -
学习Rust的第10天:枚举和模式匹配
枚举:我们看到在Rust中,枚举是列出可能值的数据类型,提供了一种简单且类型安全的机制来描述替代方案。我们研究了如何创建枚举并使用它们来表示类似的可能性,例如一周中的几天。关键字允许对不同的值进行模式匹配,并基于匹配的模式执行代码,提供了一种简洁而强大的方式来处理枚举,结构或其他类型中的各种情况或变体。Rust中的枚举是一种数据类型,允许您通过枚举其可能的值来定义类型,提供一种简洁且类型安全的方式来表示替代方案。表示值的存在或不存在,提供了一种简洁和类型安全的方式来处理值可能存在或缺失的场景。原创 2024-04-19 07:15:00 · 840 阅读 · 0 评论 -
学习Rust的第9天:Structs
通过将具有不同数据类型的多个字段捆绑在一起,结构体提供了一个强大的工具,用于在Rust程序中创建清晰和结构化的数据表示。它们提供了一个强大的工具,可以在Rust程序中以简洁和结构化的方式组织和操作数据。Rust中的元组结构是轻量级结构,使用元组来定义其字段,提供了一种无需单独命名每个字段即可创建新类型的方法。我们可以在这里使用一个元组,但是这样,我们不能在特定的函数中传递一个具有任何值的元组,这可以防止这种情况发生。它是对结构体本身实例的引用,允许方法访问和操作结构体的数据,而无需获得其所有权。原创 2024-04-18 07:15:00 · 617 阅读 · 1 评论 -
学习Rust的第8天:Slicing
Rust中的切片允许我们引用集合中连续的元素序列,从而对数据操作提供更细粒度的控制。:如果没有找到空格字符,则返回对整个原始字符串切片的引用,这意味着整个字符串是“第一个单词”。在rust中,Slices允许你引用一个项目集合中的一个连续的元素序列,而不是整个集合。:如果没有找到空格字符,则返回字符串的长度,表示整个字符串是“第一个单词”。让我们修改我们的函数。:定义一个函数来查找并返回字符串切片中的第一个单词。:定义一个函数来查找字符串中第一个空格字符的索引。:遍历字节切片中的每个字节,跟踪其索引。原创 2024-04-17 07:15:00 · 880 阅读 · 0 评论 -
学习Rust的第7天:参考资料
不可变引用允许阅读数据而不需要所有权转移,而可变引用允许修改,但要遵守确保独占访问和防止数据竞争的规则。昨天我们看到了如何将参数传递给一个函数与将值分配给另一个变量产生相同的效果,并有效地导致所有权的丧失。Rust引用是指针,允许在不转移所有权的情况下借用和访问数据,促进内存安全并防止数据竞争。我们上面看到的是一个不可变的引用,我们不能真正改变值,但我们可以从中读取。简单地说,在一个特定的作用域中,只能存在一个对变量的可变引用。对于一个特定的数据块,只允许一个可变引用或多个不可变引用。是C的一个基本概念。原创 2024-04-16 07:30:00 · 432 阅读 · 0 评论 -
学习Rust的第6天:所有权模型简介
所有权是一个独特的内存管理系统,其中每个值都有一个指定的所有者,确保在所有者超出范围时自动释放内存,消除常见的内存相关错误。堆栈是一个固定大小的内存,用于存储每个函数调用和变量的堆栈帧。堆的大小是动态的,可以存储任何数量的数据。欢迎来到第六天的学习,在过去的五天里,我们学到的东西几乎对每一种语言都是一样的。是一个无符号的8位整数,所以我们可以直接将其存储在堆栈内存中。类型的大小可以是动态的,所以我们在堆中分配一些内存并将值存储在那里。在Rust中,多个变量可以以不同的方式与相同的数据交互。原创 2024-04-15 07:30:00 · 941 阅读 · 0 评论 -
学习Rust的第5天:控制流
欢迎来到这个为期30天的学习rust系列的第五天,今天我们来看看rust中的控制流。是的,它将输出“你是一个成年人”,否则它将输出“你不是一个成年人”。变为0,循环退出,程序继续执行循环外的任何后续代码。循环遍历范围、集合或迭代器,每次迭代执行一个代码块。循环用于遍历代码块,直到明确指定停止或满足特定条件。当您希望在满足条件的情况下执行代码块时,将使用。现在,如果我想在条件不满足时获得输出,该怎么办?控制流,顾名思义,根据条件控制程序的流。,并使用值4进行初始化。是的,它会输出“你是一个成年人”。原创 2024-04-14 07:30:00 · 1209 阅读 · 4 评论 -
学习Rust的第4天:常见编程概念
Rust中的元组就像一个混合的袋子,可以容纳不同类型的项目,允许您以特定的顺序对它们进行分组和组织。从技术上讲,参数是函数定义中的占位符,参数是调用函数时提供给函数的实际值或数据。从技术上讲,函数的定义是一个独立的代码单元,它执行特定的任务,接受输入并产生输出,增强代码结构和可重用性。正如我们昨天所看到的,使用阴影,您可以声明一个与前一个变量同名的新变量,并且新变量将覆盖前一个变量。在rust中,变量默认是不可变的,这意味着一旦设置了值就不能改变,要使变量可变,使用。rust中的数组有固定的长度。原创 2024-04-13 07:14:03 · 895 阅读 · 1 评论 -
学习Rust的第3天:猜谜游戏
现在我们有了输入,程序将用户的猜测与秘密数字进行比较,以确定他们是否猜对了。)就像是Rust项目的配方,指定了它的名称、版本、Rust版本以及它需要的任何外部依赖(在本例中是“兰德”crate)。在步骤5中,程序实现了一个循环结构,反复提示用户进行猜测,直到他们正确地猜出密码,就像我们在算法中看到的那样。第0号:如果在解析过程中出现错误,占位符'_'将匹配任何错误,循环中的代码将继续执行,提示用户再次输入。我们将构建一个游戏,它将选择1到100之间的随机数字,用户必须猜测正确的猜测用户获胜的数字。原创 2024-04-12 07:30:00 · 703 阅读 · 0 评论 -
学习Rust的第2天:Cargo
欢迎来到学习Rust的第二天,基于Steve Klabnik的《The Rust Programming Language》一书。Cargo是Rust的一个强大而高效的构建系统和包管理器,旨在帮助管理项目依赖关系,并确保在各种环境中构建一致。今天,我们深入了解Cargo,这是Rust强大而方便的构建系统和包管理器。这是一个简单的Rust程序,打印“Hello,world!这就是Rust中Cargo程序的基本结构和工作流!要构建并运行程序,请导航到项目目录(在本例中为。此命令生成项目并运行生成的二进制文件。原创 2024-04-11 07:29:30 · 1009 阅读 · 0 评论 -
学习Rust的第1天:基础知识
我是Shafin Murani,一名软件开发专业的学生,我每天都在记录我学习Rust的过程。函数是一个特殊的函数,它是在每个可执行程序中自动运行的代码片段,不仅仅是Rust,许多其他语言也是如此。旁注:Rust宏就像个性化的快捷方式,可以根据规则自动执行重复性任务,从而帮助您更有效地编写代码。我过去研究过Rust,对Java、C、C++和Python的基本编程概念有很好的理解。Rust是一种系统编程语言,优先考虑性能,内存安全和零成本抽象。现在我们来分解一下,看看它是干什么的。用于在rust中声明函数。原创 2024-04-10 07:30:10 · 583 阅读 · 0 评论