随着我们的坑越来越多,越来越大,我们必须要对各种坑进行管理了。Rust为我们提供了一套坑务管理系统,方便大家有条不紊的寻找、管理、填埋自己的各种坑。
rust有自己的规则和约定用来组织模块,比如一个包最多可以有一个库crate,任意多个二进制crate、导入文件夹内的模块的两种约定方式... 知道这些约定,就可以快速了解rust的模块系统。 先把一些术语说明一下:
rust提供了非常优秀的包管理器cargo,我们可以使用crate,module,package来组织代码。
二进制项形式的crate被编译为可执行文件,必须具有main函数作为程序执行时的入口。
Rust 的模块系统用来管理代码的组织,包括哪些内容可以被公开,哪些内容作为私有部分,以及程序每个作用域中的名字等。模块系统包括:
今天,我们继续「Rust学习笔记」的探索。我们来谈谈关于「包、Crate和模块」的相关知识点。
java项目中用maven管理代码时,如果遇到大型工程,一般会拆分成不同的模块,比如spring-mvc中,通常会按model, view, controller建3个模块,然后根据一定的依赖关系进行引用。这个概念在Rust中是通用的,只不过maven换成了cargo,而模块变成了crate,看下面的例子。
上一篇文章我们介绍了Cargo.toml中的features配置块,这次我们再来看看workspace配置块的用法。
在本文中,我将会通过实际的例子来解释模块系统以便于让你清晰地理解它是怎样工作的并且能够快速在自己的项目中应用。
在Rust源代码的rust/compiler/rustc_ast_passes/src/node_count.rs文件中,它定义了Rust编译器中的AST节点计数器。该文件的作用是统计不同类型的AST节点在程序中的数量,以便在优化和调试过程中能够提供有用的信息。
刚接触Rust遇到一堆新概念,特别是package, crate, mod 这些,特别迷糊,记录一下
假设你正在编写一个程序,用来模拟蕨类植物从单个细胞开始的生长过程。你的程序,也像蕨类植物一样,一开始会非常简单,所有的代码也许都在一个文件中——这只是想法的萌芽。随着成长,它将开始分化出内部结构,不同的部分会有不同的用途。然后它将分化成多个文件,可能遍布在各个目录中。随着时间的推移,它可能会成为整个软件生态系统的重要组成部分。对于任何超出几个数据结构或几百行代码的程序,进行适当的组织都是很有必要的。
在Rust源代码中,rust/src/librustdoc/html/render/search_index.rs文件的作用是生成搜索索引,用于在Rust文档页面上进行关键字搜索。该文件实现了一个用于索引和搜索Rust文档的数据结构。
今天,我们继续「Rust学习笔记」的探索。我们来谈谈关于「面向对象编程」的相关知识点。
感谢各位参加由Rustcc主办的首届Rust中国开发者大会。本次大会的回放录像已经在Rustcc论坛公布。
Padme(Pixel As Dot-Matrix Emulator,像素点阵模拟器),padme-core是一个Gameboy模拟器引擎。它本身不依赖libstd或动态内存,这使得它更容易在任何嵌入式平台或web组件中使用。
题图来自 Decoding Rust: Everything You Need to Know About the Programming Language[1]
在 Rust 中使用 nix 这个库,在某些情况下可以简化 Unix 系统编程。本文主要包括以下内容:
原文链接:A brief history of Rust at Facebook - Facebook Engineering
题图来自 Rust 101 — Everything you need to know about Rust[1]
当使用 Cargo 创建一个 lib 类型的包时,它会为我们自动生成一个测试模块。先来创建一个 lib 类型的 adder 包。创建成功后,在 src/lib.rs 文件中可以发现如下代码:
rust/compiler/rustc_lint/src/drop_forget_useless.rs 这个文件的作用是实现了一个编译器 lint(代码风格检查工具) 记为 "drop_forget_useless",用于检查并提醒开发者潜在的无效使用 Drop trait 和 mem::forget 函数的情况。下面将详细介绍该文件的功能。
在Rust源代码中,rust-analyzer项目是一个用于提供快速、准确的Rust语言分析服务的工具。在该项目的路径rust-analyzer/crates/hir-def/src下,data.rs文件提供了用于存储和管理Rust代码的语义信息的数据结构。
在Rust源代码中,rust/src/tools/rustfmt/src/visitor.rs这个文件的作用是实现了Rustfmt的访问器模块,用于遍历Rust代码并进行格式化。该模块定义了几个重要的结构体:SnippetProvider和FmtVisitor。
Rust是一种以安全性和高效性著称的系统级编程语言,其设计哲学是在不损失性能的前提下,保障代码的内存安全和线程安全。在Rust中,trait是一种用于抽象类型行为的机制。有时候,我们需要在一个trait的基础上扩展更多的行为,或者将多个trait组合起来形成一个更大的trait继承体系。这时,Rust的父trait就派上用场了。本篇博客将深入探讨Rust中的父trait,包括父trait的定义、使用场景、使用方法以及注意事项,以便读者了解如何在Rust中灵活组织trait的继承体系。
在方法后面使用通用类型T,比如fn foo<T: Display>(arg:T){}
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。
在Rust源代码中,rust/library/std/src/sys/itron/time.rs文件是用于实现与ITRON操作系统相关的时间功能。ITRON是一种实时操作系统,被广泛用于嵌入式系统中。这个文件中定义了一些与时间相关的结构体和函数。
做区块链的基本几乎没有人不知道 Rust 这门编程语言,它非常受区块链底层开发人员的青睐。说来也奇怪,Rust 起源于 Mazilla,唯一大规模应用就是 Firefox,作为小众语言却在区块链圈子里火了。这其中应该和以太坊的发起人 Govin Wood 创建的 Parity 项目有关,Parity 是一款用 Rust 编写的以太坊客户端。
在Rust源代码中,rust/library/std/src/sys_common/wtf8.rs这个文件的作用是实现了UTF-8编码和宽字符编码之间的转换,以及提供了一些处理和操作UTF-8编码的工具函数。
这是第 99 篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:聊聊Deno的那些事 https://www.zoo.team/arti
在Rust源代码中,rust-analyzer是一个Rust语言的IDE插件和代码分析器。其中,generate_is_empty_from_len.rs是rust-analyzer中的一个处理程序,用于生成"isEmpty"方法的模版代码。
TIOBE发布了2020年9月的编程语言指数。TIOBE为Rust给出了0.92%的指数,同比8月的0.74%上升了三分之一,也是该指数历史上首次超过0.8%。目前,在TIOBE跟踪的所有编程语言里,Rust位列于第18名,超过了随后的Dart和Objective-C两门语言。
当你是从golang刚转过来,你一定经常忘记写分号, 对于 Rust 语言而言,区分语句和表达式的方式是非常重要,而且很多时候有了表达式会很方便, 比如不用再写return,或者在匹配的时候使用。
rust/compiler/rustc_codegen_gcc/src/back/mod.rs 文件是 Rust 编译器的源代码中的一个模块,主要负责与 GCC(GNU 编译器集合)相关的后端代码生成。
rust-analyzer 是一个 Rust 语言的语法分析器和语义分析器,用于提供代码补全、导航、重构等开发工具。而 rust-analyzer 的代码实现存储在 rust/src/tools/rust-analyzer 这个文件夹中。
2021 年 4 月 14 号,一封主题名为《Rust support》的邮件出现在 LKML 邮件组中。这封邮件主要介绍了向内核引入 Rust 语言支持的一些看法以及所做的工作。邮件的发送者是 Miguel Ojeda,为内核中 Compiler attributes、.clang-format 等多个模块的维护者,也是目前 Rust for Linux 项目的维护者。
最近的一项 Stack Overflow 调查 发现,近 80% 的受访者都喜欢或希望使用 Rust 语言进行开发。这个数字令人难以置信!那么 Rust 有什么益处呢?本文探讨这种类似 C 的语言的精彩亮点,演示为什么它应该是您要学习的下一种语言。
本文是一篇Rust基础文章,如果下面的问题对你不是问题,就不要浪费时间阅读这篇文章了,做些更有意义的事情吧。
题图来自 Programming languages: How Google is using Rust to reduce memory safety vulnerabilities in Android[1]
在Rust的源代码中,rust/compiler/rustc_parse/src/parser/expr.rs这个文件扮演了解析表达式的角色。表达式是Rust中的一种语法结构,用于表示程序中的计算、操作和值。
在Rust源代码中,rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs文件的作用是实现了一个能够将输入的文本映射为标记的结构。具体来说,它定义和实现了几个结构体(struct)和枚举(enum),包括TokenMap和TokenTextRange。
我们常说 功能模块,就是用于将函数或结构体按照功能分组。也常常把相似的函数或者实现相同功能的或者共同实现一个功能的函数和结构体划分到一个模块中。
题图来自 Why is building a UI in Rust so hard?[1]
在Rust源代码中,rust/library/std/src/sys/wasm/alloc.rs文件的作用是实现了用于WebAssembly平台的内存分配器。具体来说,该文件中定义了一系列的struct和trait,用于管理和操作WebAssembly的内存。
题图来自 My second impression of Rust and why I think it's a great general-purpose language![1]
rust-analyzer是一个基于Rust语言的IntelliSense引擎,用于提供IDE自动补全、代码导航和其他代码编辑功能。在rust-analyzer的源代码中,rust/src/tools/rust-analyzer/crates/ide-completion/src/completions/use_.rs文件的作用是处理Rust代码中的use语句,为用户提供相关的自动补全功能。
领取专属 10元无门槛券
手把手带您无忧上云