Rust tips #41 ~ #60
Tip #41
类似于 Go 语言中的通道(Go 的 channel
),Rust 中的 std::sync::mpsc
提供了一种线程间安全地读写数据的机制:
|
|
在这个例子中,我们创建了一个通道,然后在一个线程中发送了一个字符串。在主线程中,我们等待接收这个字符串并打印它。
Rust tips #21 ~ #40
Tip #21
在 Rust 中,我们经常使用 Clone()
或 Copy()
。这两者之间的区别是什么?
Copy
:支持Copy
的类型可以安全地通过字节复制的方式进行复制,可以类比 C 语言中的memcpy
函数。Clone
:支持Clone
的类型也可以被复制,但它通常需要执行一些逻辑操作来完成深拷贝。
Rust tips #1 ~ #20
Tip #001
Rust 不支持静态 vec(static vec
),但是最接近的是静态数组。例如,如果你想存储三个字符串的数组,可以尝试这样: static STRINGS : [&str;3] = ["a", "b", "c"]
“测试 Rust 的 I/O 性能”
我们将尝试使用 Rust 来比较读取文件的各种不同方法。除了 wc -l
之外,我们将使用 criterion
对每个函数运行 10 次,然后取平均值。
以下基准测试的代码存放在 Benchmark code for Linux IO using Rust。
在以下代码中,BUFFER_SIZE 为 8192,NUM_BUFFERS 为 32。
原文: # Linux File IO using Rust](https://opdroid.org/rust-io.html)) by opdroid
Rust Tokio 任务取消模式
原文: Rust tokio task cancellation patterns
我最近一直在尝试重新学习 Rust。开始时进展有些缓慢,但我觉得我终于开始感受到累积效应在起作用了。也许这只是我的大脑在跟我开玩笑,但现在写 Rust 时我感觉比几周前轻松多了。
Rust 并发编程实战课
Rust 越来越得到广泛的应用,尤其对于追求性能的系统编程领域,最近还正式进入了Linux 内核的主干,并预计在 6.1 版本中正式使用。
Rust 虽然设计理念独树一帜,性能也是那么的优秀,但是学习起来并不简单,学习曲线很陡。同时由于Rust不像Go语言一样,不受某一家公司的控制,看起来在开源方面貌似很“Open”,所以也得到了广大开发者的青睐,贡献了许多库,不乏高质量的库,甚至比标准库的质量和使用率还高,这也带来了一些问题。其他语言,比如Go语言,它的标准库相当的优秀,比如一堆优秀高质量的并发原语,在开发者在开发并发程序的时候,需要同步控制和任务编排时,脑海中第一选择就是标准库的并发原语,实在找不到合适的并发原语才去找第三方的库。但是Rust不一样,虽然标准库也提供了一些优秀的并发原语,但是限于语言的特性,使用起来相当的复杂,也有很多第三方的库提供性能更好或者特性更多或者更易使用的功能,所以在使用Rust开发并发程序的时候,很多开发者对并发逻辑的控制无从下手,或者有“选择困难症”,所以我专门开了一个序列,准备系统的介绍 Rust的并发编程的知识,通过一百多个简短而明确的例子,全面介绍Rust的并发编程和相关库的使用:rust programming via rust .