原文标题:Study of std::io::Error 原文链接:https://matklad.github.io/2020/10/15/study-of-std-io-error.html 公众号: Rust 碎碎念 翻译 by: Praying 在本文中,我们将剖析 Rust 标准库中的std::io::Error类型的实现.对应的代码在:library/std/src/io/error.rs[1]. 你可以把把本文作为: 对标准库某一部分的研究 一份高级错误管理指南 一个美观的 API…
原文链接:https://hashrust.com/blog/arrays-vectors-and-slices-in-rust/ 原文标题:Arrays, vectors and slices in Rust 公众号:Rust 碎碎念 翻译: Praying 引言(Introduction) 在本文中,我将会介绍 Rust 中的 array.vector 和 slice.有 C 和 C++编程经验的程序员应该已经熟悉 array 和 vector,但因 Rust 致力于安全性(safety),…
原文标题:Understanding Futures In Rust -- Part 1 原文链接:https://www.viget.com/articles/understanding-futures-in-rust-part-1/ 公众号: Rust 碎碎念 翻译 by: Praying 背景 Rust 中的 Futures 类似于 Javascript 中的promise[1],它们是对 Rust 中并发原语的强大抽象.这也是通往async/await[2]的基石,async/await…
原文标题:Understanding Futures in Rust -- Part 2 原文链接:https://www.viget.com/articles/understanding-futures-is-rust-part-2/ 公众号: Rust 碎碎念 翻译 by: Praying 背景 如果你还没有看前面的内容,可以在这里[1]查看(译注:已有译文,可在公众号查看). 在第一部分,我们介绍了 Future trait,了解了 future 是如何被创建和运行的,并且开始知道它们如何…
原文:Async IO in Python: A Complete Walkthrough 原文作者: Brad Solomon 原文发布时间:2019年1月16日 翻译:Tacey Wong 翻译时间:2019年7月22日 翻译仅便于个人学习,熟悉英语的请阅读原文 目录 搭建自己的实验环境 异步IO鸟瞰图 哪些场景适合异步IO? 异步IO释义 异步IO使用起来不容易 asyncio 包和 async/await async/await 语法和原生协程 异步IO规则 异步IO设计模式 链式协程…
原文标题:Understanding Closures in Rust 原文链接:https://medium.com/swlh/understanding-closures-in-rust-21f286ed1759 公众号: Rust 碎碎念 翻译 by: Praying 概要 闭包(closure)是函数指针(function pointer)和上下文(context)的组合. 没有上下文的闭包就是一个函数指针. 带有不可变上下文(immutable context)的闭包属于Fn 带有可变…
原文标题:Understanding Partial Moves in Rust 原文链接:https://whileydave.com/2020/11/30/understanding-partial-moves-in-rust/ 公众号: Rust 碎碎念 翻译 by: Praying 最近,我一直在研究Rust,虽然从很多方面来看它都是一门十分优秀的语言,但我也发现了很多不易察觉的复杂性.其中一个例子就是,不太引人注意的局部移动(partial move) .因此,我在想,为什么不写一篇文…
原文标题:Understanding Rust Lifetimes 原文链接:https://medium.com/nearprotocol/understanding-rust-lifetimes-e813bcd405fa 公众号: Rust 碎碎念 翻译 by: Praying 从 C++来到 Rust 并需要学习生命周期,非常类似于从 Java 来到 C++并需要学习指针.起初,它看起来是一个不必要的概念,是编译器应该处理好的东西.后来,当你意识到它赋予你更多的力量--在 Rust 中,它…
在学习Rust过程中突然想到怎么实现继承,特别是用于代码复用的继承,于是在网上查了查,发现不是那么简单的. C++的继承 首先看看c++中是如何做的. 例如要做一个场景结点的Node类和一个Sprite类继承它. 定义一个node基类 struct Node { float x; float y; void move_to(float x, float y) { this->x = x; this->y = y; } virtual void draw() const { printf(&qu…
RefCell Rust在编译阶段会进行严格的借用规则检查,规则如下: 在任意给定时间,要么只能有一个可变引用,要么只能有多个不可变引用. 引用必须总是有效. 即在编译阶段,当有一个不可变值时,不能可变的借用它.如下代码所示: fn main() { let x = 5; let y = &mut x; } 会产生编译错误: error[E0596]: cannot borrow immutable local variable `x` as mutable --> src/main.rs:…