目录错误处理不可恢复错误被动触发backtrace栈展开panic时的两种终止方式主动调用panic线程panic后程序是否会终止Result枚举类型unwrap和expect传播错误?用于Option返回带返回值的 main 函数错误处理Rust 中的错误主要分为两类:可恢复错误,通常用于从系统全局角度来看可以接受的错误,例如处理用户的访问、操作等错误,这 ......
13
0
0
2023-09-11
到目前为止,我们已经讲解了包括 变量、可变性、常量、数据类型、函数、if-else 语句 和 循环 在内的一些关于 Rust 编程的基础知识。在 Rust 基础系列的最后一章里,让我们现在用 Rust 编写一个程序,使用这些主题,以便更好地理解它们在现实世界中的用途。让我们来编写一个相对简单的程序,用来从水果市场订购水 ......
15
0
0
2023-09-01
推进你的 Rust 学习,熟悉 Rust 程序的变量和常量。在 该系列的第一章中,我讲述了为什么 Rust 是一门越来越流行的编程语言。我还展示了如何 在 Rust 中编写 Hello World 程序。让我们继续 Rust 之旅。在本文中,我将向你介绍 Rust 编程语言中的变量和常量。此外,我还将讲解一个称为“遮蔽shadowing” ......
16
0
0
2023-08-30
目录Rust如何进行模块化开发?Package和CreateCargo的惯例Create的作用定义module来控制作用域和私有性路径Path私有边界(private boundary)pub关键字super关键字pub structpub enumUse关键字use的习惯用法as关键字使用 pub use 重新导出名称导入外部包如何将模块放入其他文件?类似 ......
36
0
0
2023-07-21
目录目标命令行解析实现Ping周期性发送其他验证总结这两年Rust火的一塌糊涂,甚至都烧到了前端,再不学习怕是要落伍了。最近翻了翻文档,写了个简单的Ping应用练练手,被所有权折腾的够呛,相比起Golang上手难度大很多,现将开发中的一些问题总结如下,所有源码见ring。目标实现一个Ping,功能包含:命令行解析实现ICMP协议,pnet包中已经包含了ICM ......
53
0
0
2023-06-30
目录一. 简述二. 编写测试三. 测试相关的宏和函数3.1. 使用assert!宏检查结果3.2. 使用assert_eq!宏和assert_ne!宏判断相等性3.3. 添加自定义的错误提示信息3.4. 使用should_panic检查paninc3.5. 使用Result<T, E>编写测试四. 控制测试的运行方式4.1. 并行或串行的进行测试 ......
51
0
0
2023-06-29
目录楔子什么是 traittrait 作为参数trait 作为返回值实现一个 max 函数楔子前面我们提到过 trait,那么 trait 是啥呢?先来看个例子:#[derive(Debug)] struct Point<T> {     x: T, } impl& ......
53
0
0
2023-06-18
目录楔子什么是引用可变引用悬空引用小结楔子好久没更新 Rust 了,上一篇文章中我们介绍了 Rust 的所有权,并且最后定义了一个 get_length 函数,但调用时会导致 String 移动到函数体内部,而我们又希望在调用完毕后能继续使用该 String,所以不得不使用元组将 String 也作为元素一块返回。// 该函数计算一个字符串的长度 ......
73
0
0
2023-06-11
目录楔子定义并实例化结构体简化版的实例化方式基于已有结构体实例创建元组结构体没有字段的空结构体结构体数据的所有权使用结构体的示例程序楔子结构体是一种自定义的数据类型,它允许我们将多个不同的类型组合成一个整体。下面我们就来学习如何定义和使用结构体,并对比元组与结构体之间的异同。后续我们还会讨论如何定义方法和关联函数,它们可以指定那些与结构体数据相关的行为。定义 ......
62
0
0
2023-06-11
目录String新建字符串更新字符串使用 + 运算符或 format! 宏拼接字符串索引字符串字符串 slice遍历字符串HashMap新建 HashMapHashMap 和 ownership访问 HashMap 中的值更新 HashMap直接覆盖新插入更新旧值总结String字符串是比很多开发者所理解的更为复杂的数据结构。加上 UTF-8 的不定长编码等 ......
75
0
0
2023-06-02
目录Rust语言中级教程一、指针什么是指针名词解释Rust 的引用Rust 的引用 和 指针Raw Pointers(原始指针)关于 Raw Pointer 的提醒使用 Raw Pointer 的情况Rust 指针生态Rust 智能指针Rust语言中级教程一、指针什么是指针指针是计算机引用无法立即直接访问的数据的一种方式(类比 书的目录)数据在物理内存(RA ......
67
0
0
2023-05-22
目录什么是 Tokio 模块 Channel?创建一个 mpsc channel发送和接收字符串发送和接收数字发送和接收结构体发送和接收元组发送和接收枚举多个生产者和单个消费者使用 BufferedSink 发送数据使用 select!宏选择最先到达的消息结论什么是 Tokio 模块 Channel?Rust 语言是一种系统级编程语言,它具有强类型和内存安全 ......
77
0
0
2023-05-21
目录Substrate框架简介Substrate框架中Core部分概述Substrate Core的核心功能区块链系统基础部分节点本地功能模块共识算法区块同步交易池管理如何使用Substrate Core实现区块链应用安装和配置Substrate Core设计和实现区块链应用测试和部署区块链应用Substrate Core的应用案例公链应用案例联盟链应用案例 ......
76
0
0
2023-05-19
目录1. 什么是panicpanic的定义panic与程序崩溃的关系2. panic的触发条件显式触发panic隐式触发panic3. 如何处理panic捕获panic防止panic4. panic与Result和Option类型的关系使用Result类型避免panic使用Option类型避免panic5. 在实际项目中使用panic的例子使用panic处理 ......
74
0
0
2023-05-18
目录package,crate,modulecratepackage模块 Module引用module路径super创建公有的结构体和枚举use创建惯用的 use 路径使用 pub use 重导出名称嵌套路径来消除大量的 use 行通过 glob 运算符将所有的公有定义引入作用域将模块拆分成多个文件另一种文件路径参考资料package,crate,modul ......
78
0
0
2023-05-03