- 86 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 22:17:14.89 ID:Zjk1d74X.net]
- >>76
同期実行ライブラリと整合性が無いというのはウソです Rustでstd利用の同期とasync-std利用の非同期のプログラムはほとんど同じように書けます 例えば複数のファイルのチェックサム計算を同期と非同期の2通りに書いた以下の記事を参考にすると https://qiita.com/osanshouo/items/671c45072a79c7b27aba メイン部分の両者のdiffを取ると以下のような感じです for entry in entries { let entry = entry.unwrap(); if entry.file_type().unwrap().is_file() { + let handle = async_std::task::spawn(async move { let filepath = entry.path(); - let mut file = fs::File::open(&filepath).unwrap(); + let mut file = fs::File::open(&filepath).await.unwrap(); let bytes = { let mut bytes = Vec::new(); - file.read_to_end(&mut bytes).unwrap(); + file.read_to_end(&mut bytes).await.unwrap(); bytes }; let checksum = bytes.iter().fold(0u8, |acc, b| acc.wrapping_add(*b)); println!("{:?}: {}", filepath.file_name().unwrap(), checksum); + }); + handles.push(handle); } } つまり差は2点のみ 非同期実行では不可欠なspawnがが入ることと 非同期を同期風に書けるようにするためのawaitが入ることだけです おっしゃる『同期実行のライブラリと整合性が無さすぎる』との主張は間違っています
|

|