目录1. 什么是panicpanic的定义panic与程序崩溃的关系2. panic的触发条件显式触发panic隐式触发panic3. 如何处理panic捕获panic防止panic4. panic与Result和Option类型的关系使用Result类型避免panic使用Option类型避免panic5. 在实际项目中使用panic的例子使用panic处理 ......
339
0
0
2023-05-18
目录package,crate,modulecratepackage模块 Module引用module路径super创建公有的结构体和枚举use创建惯用的 use 路径使用 pub use 重导出名称嵌套路径来消除大量的 use 行通过 glob 运算符将所有的公有定义引入作用域将模块拆分成多个文件另一种文件路径参考资料package,crate,modul ......
305
0
0
2023-05-03
JUST PRACTICE蛮久前入门了一下 Rust 语言。它的设计模型非常地吸引C/C++的开发者。但是学习语言嘛还是要练习一下,之前也用它给我们项目写了个命令行小工具。这回拿来写个小型的服务器程序吧。Rust 的生态还处于非常初级的阶段。很多组件和库都处于开发中和设计变更的阶段,比起golang来,很多功能库都没有。 服务器编程本身特别注重高并发能力和, ......
353
0
0
2023-04-27
特征(Trait)特征(trait)是rust中的概念,类似于其他语言中的接口(interface)。在之前的代码中,我们也多次见过特征的使用,例如 #[derive(Debug)],它在我们定义的类型(struct)上自动派生 Debug 特征,接着可以使用 println!("{:?}", x) 打印这个类型。特征定义了一个可以被共享的行为,只要实现了特 ......
446
0
0
2023-04-05
目录Rust中的所有权机制什么是所有权所有权规则String类型内存与分配移动克隆所有权与函数引用与借用可变引用悬垂引用引用的规则Slice类型(切片)字符串切片其他类型的 slice总结Rust中的所有权机制什么是所有权Rust 的核心功能(之一)是 所有权(ownership)。虽然该功能很容易解释,但它对语言的其他部分有着深刻的影响。所有程序都必须管理 ......
410
0
0
2023-03-21
引用和借用如果每次都发生所有权的转移,程序的编写就会变得异常复杂。因此rust和其它编程语言类似,提供了引用的方式来操作。获取变量的引用,称为借用。类似于你借别人的东西来使用,但是这个东西的所有者不是你。引用不会发生所有权的转移。引用的使用在rust中,引用的语法非常简单。通过&来取引用,通过*来解引用。例如:fn main() { let ......
435
0
0
2023-03-12
目录前言安装准备初始项目Cargo.toml初始web项目游戏规则游戏设计Rust实现测试调试前言之前学了几遍,后来忘记了,通过制作该游戏再复习复习。安装准备wasm-pack : https://rustwasm.github.io/wasm-pack/installer/cargo-generate:cargo install cargo-generat ......
527
0
0
2023-03-07
目录FutureWake & Context为什么需要 executor ?什么是 waker ?async/awaitExecutorWaker struct 到 ArcWake traitFuturesUnordered单线程 executor线程池 executor总结异步编程在 Rust 中的地位非常高,很多 crate 尤其是多IO操作的都 ......
381
0
0
2023-02-06
使用Rust实现一个DLL注入器依赖[dependencies] clap = "4.1" anyhow = "1.0" [dependencies.windows] version="0.44" features = [ "Win32_Foundation", "Win32_System_Diagnostics_ToolH ......
472
0
0
2023-02-01
跟随这个演示,学习如何在 Rust 中使用文件系统模块。知道如何读写文件对各种用途都很有用。在 Rust 中,这项任务是通过标准库中的文件系统模块(std::fs)完成的。在这篇文章中,我将向你介绍如何使用这个模块。为了演示这项任务,我准备了一些示例代码,也可以在 GitHub 上找到。准备工作在使用 Rust 时,失败的函数会返回&nb ......
440
0
0
2023-01-24
Linux 6.1 发布,拉开 Rust 进入 Linux 内核的大幕 上周末,Linus Torvalds 发布了 Linux 内核 6.1,并开启了 6.2 的合并窗口。之所以专门提到 6.1 这个版本,是因为这个版本更具有里程碑意义。在 6.1 中,首次初步支持了 Rust,对 MGLRU 页面回收算法进行了大修,以及很多重要的特性和驱动更新。在 ......
347
0
0
2022-12-25
引子有些人说用 Rust 进行 Web 开发 是杀鸡用牛刀,这种观点其实是对「系统级语言」的刻板印象造成的。无论从性能、工程架构还是开发效率,Rust 其实都很出色,目前就是需要一套比较成熟的框架。无论如何,Rust 在 Web 开发领域的生态在逐步成型。注意:这里的 Web 是指更加广义的 Web ,不仅仅是 CRUD,还包括 网络服务、云原生服务端、 W ......
511
0
0
2022-11-16
这是来自 Google OpenTitan 团队,给嵌入式 C 程序员专门打造的一份 Rust 指南。“原文:https://docs.opentitan.org/doc/ug/rust_for_c/作者:Google OpenTitan 团队引子在今年(2021)RustConf 大会上,Miguel Young 分享了《移动构造函数,Rust 中可能吗? ......
391
0
0
2022-11-16
Rust原子操作操作有5中内存顺序: Relaxed Release Acquire AcqRel SeqCstRelaxed 没有内存顺序约束, 仅仅是原子类型的store/load操作是原子操作, 即针对该原子类型的在不同线程之间的操作顺序是任意的;Release和Acquire是在不同的线程间针对同一原子类型对象的进行store和load操作时配合使用 ......
534
0
0
2022-11-16
首先新建工程,然后用vscode打开,命令如下:cargo new snake --bin 文件结构如下:Cargo.Toml文件内容如下:[package] name = "snake" version = "0.1.0" edition = "2021" # See more keys and their definitions at ht ......
390
0
0
2022-11-16