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); } }