黑白之院

Valar Morghulis


  • 首页

  • 归档

  • 分类

  • 标签

  • 收藏

  • 关于

Talent Plan 之 Rust 网络编程(二):日志结构文件 I/O

发表于 2020-06-09 | 分类于 Rust
| 字数统计: 5 | 阅读时长 ≈ 1

引言

阅读全文 »

Rust & Python & Go 错误处理对比

发表于 2020-06-07 | 分类于 Rust
| 字数统计: 2.6k | 阅读时长 ≈ 12

引言

很多编程语言中都有特定的错误处理方式,大体上来说,主要分为如下两类:

  1. 异常机制 try-catch(代表语言:Java/JavaScript/Python 等);
  2. 返回错误 return-error(Go/Rust 等)。

由于我们主要使用的语言是 Python 和 Go,所以上述两种错误方式都有一定的实践经验,就不多赘述了。今天主要来看看 Rust 中错误处理方式,学习另外一种优雅简洁的错误处理思路。在 Rust 中,我们主要还是依靠标准库提供的一些组合子、宏以及 ? 操作符来逐步减少样板代码的,从而让代码更加紧凑,我们只需要关注核心业务逻辑即可,让错误的传递更加轻松简单。当然,讲得不一定对,仅供参考。

在开始之前,我们先来回顾下以上两种错误处理方式的优缺点,做个简单的对比:

image.png

在 Rust 中,提供了如下几种方式来处理错误或者异常:

image.png

阅读全文 »

Talent Plan 之 Rust 网络编程(二):预备知识

发表于 2020-06-07 | 分类于 Rust
| 字数统计: 6.4k | 阅读时长 ≈ 25

引言

惭愧,时隔两个月继续本系列课程的学习,之前因为一些工作上的事情耽搁了很久。本节课程的学习素材非常丰富,也有很多是我们在编写 key-value 数据库前需要掌握的思想。

在资料学习部分,我们首先需要了解下什么是日志结构存储(Log structured storage),接下来需要掌握在 Rust 中如何以优雅的方式处理错误,最后还需要学习下 std::collections 中的一些数据结构和 std::io 中的常用函数。

在练习题部分,我们还将接触 Rust 中特别常用的序列化和反序列化框架 serde,并使用该框架完成 json, ron 和 bson 相关的练习,掌握它的基本用法。

阅读全文 »

Rust 错误处理

发表于 2020-06-02 | 分类于 Rust
| 字数统计: 13k | 阅读时长 ≈ 57

引言

本文内容主要翻译自 Andrew Gallant 的文章 Error Handling in Rust。

如同大多数的编程语言,Rust 中也需要通过特定的方式处理错误。众所周知,目前常见的错误处理方式主要分为两种:

  1. 异常机制(C#/Java/Python 等);
  2. 返回错误(Go/Rust 等)。

本文将会综合全面地介绍 Rust 中的错误处理,通过循序渐进地引导,带领初学者扎实地掌握这块知识。如果我们不熟悉标准库的话,我们可能会使用较为愚蠢的方式处理错误,这种会比较繁琐,产生很多样板代码。所以本文会演示如何借助标准库让错误处理更加优雅和简洁。

Rust 错误处理

阅读全文 »

Talent Plan 之 Rust 网络编程(一):Rust 工具箱

发表于 2020-04-17 | 分类于 Rust
| 字数统计: 2.9k | 阅读时长 ≈ 11

引言

经过 上一节 的学习,相信对于 Cargo、Rust API 文档编写规范、命令行工具编写都有了初步认识,没有掌握也没关系。本节将会继续深入学习和实践,我们将采用 测试驱动开发(Test-Driven Development, TDD) 的方式编写一个简单的内存 key-value 存储库,以及一个命令行工具用于接收和处理增删查命令,并且最终还要能够通过所有单元测试。

阅读全文 »
12…10
iFaceless

iFaceless

47 日志
16 分类
75 标签
RSS
GitHub 邮箱 专栏
常用链接
  • Lingering Fragments
  • The Morning Paper
  • freeCodeCamp
  • Draveness's Blog
© 2018 — 2020 黑白之院(iFaceless)
由 Hexo 强力驱动
|
主题 — NexT.Mist
0%