Rust tips #81 ~ #90

Rust tips #41 ~ #60

Tip #41

类似于 Go 语言中的通道(Go 的 channel),Rust 中的 std::sync::mpsc 提供了一种线程间安全地读写数据的机制:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
use std::sync::mpsc;
use std::thread;

fn main() {
let (tx, rx) = mpsc::channel();

thread::spawn(move || {
let val = String::from("hi");
tx.send(val).unwrap();
});

let received = rx.recv().unwrap();
println!("Got: {}", received);
}

在这个例子中,我们创建了一个通道,然后在一个线程中发送了一个字符串。在主线程中,我们等待接收这个字符串并打印它。

阅读全文

Rust tips #21 ~ #40

Tip #21

在 Rust 中,我们经常使用 Clone()Copy()。这两者之间的区别是什么?

  • Copy:支持 Copy 的类型可以安全地通过字节复制的方式进行复制,可以类比 C 语言中的 memcpy 函数。

  • Clone:支持 Clone 的类型也可以被复制,但它通常需要执行一些逻辑操作来完成深拷贝。

阅读全文