Rust rayon crate par_iter().map() "stalls" 保存图像时

Rust rayon crate par_iter().map() "stalls" when saving images

我正在尝试通过此链接的 rust-cookbook 示例中 data-parallelism 上的示例学习 Rust。

但是,当我 运行 代码(我认为是正确的依赖项)时,并行迭代器函数没有完成。 This is the exact repo我很挣扎。

当我 运行 cargo run 在包含 5 个图像的项目的根目录时,我在控制台中得到以下内容。

Current number threads: 4
Saving 5 thumbnails into 'thumbnails'...

但是,创建了 none 个缩略图,并且程序永远不会退出。代码编译。

我在另一个 little CLI 中遇到了同样的问题。我正在努力学习 Rust,但我认为食谱中的示例更容易使用。

任何提示,即使是我可能会寻找的提示,也将不胜感激。请问是不是机器相关

这是 image crate 的 JPEG 解码器中的一个已知死锁错误:GitHub issue

JPEG 解码本身默认在内部使用人造丝,当您自己使用人造丝一次解码多个 JPEG 时,会触发此错误。作为一种解决方法,您可以通过在 Cargo.toml 中指定 image crate 依赖项来阻止 JPEG 解码器使用 rayon,如下所示:

image = { version = "0.24.1", default-features = false, features = ["jpeg"] }

这会禁用 image crate 的默认功能,其中之一是 jpeg_rayon