G.MTH.LCK.04 尽量避免直接使用标准库 std::sync::mpsc 模块中的 channel,替换为 crossbeam

【级别】 建议

【描述】

尽量避免使用 std::sync::mpsc::channel,建议使用 crossbeam

【反例】

例子来源于 std::sync::mpsc 文档


#![allow(unused)]
fn main() {
use std::thread;
use std::sync::mpsc::channel; // 不符合

let (tx, rx) = channel();

for i in 0..10 {
    let tx = tx.clone();
    thread::spawn(move|| {
        tx.send(i).unwrap();
    });
}

for _ in 0..10 {
    let j = rx.recv().unwrap();
    assert!(0 <= j && j < 10);
}
}

【正例】


#![allow(unused)]
fn main() {
use crossbeam_channel::unbounded; // 符合

let (tx, rx) = unbounded();

for i in 0..10 {
    let tx = tx.clone();
    thread::spawn(move|| {
        tx.send(i).unwrap();
    });
}

for _ in 0..10 {
    let j = rx.recv().unwrap();
    assert!(0 <= j && j < 10);
}
}