Rust 中 "fuse" 背后的词源或软件原理是什么?

What is the etymology or software principle behind "fuse" in Rust?

我 运行 反对 Rust 生态系统中的 fuse 这个词:

我知道 Linux 的 FUSE,一个用户空间文件系统。保险丝也是一种电气元件,当过多的电流通过保险丝时,它会进入开路状态。在硬件中,“融合”描述了通过(历史上)通过硅的特定导线中的过电流烧毁硅中的电路来将配置烘烤到硅中。

“融合”在 Rust 中通常是什么意思,它的词源是什么?

我能找到的 Rust 生态系统中“fuse”的最早使用是 Iterator::fuse, which was added to the standard library 在 1.0 之前的日子里。 Iterator::fuse 的初始文档说:

/// Creates an iterator that yields `None` forever after the underlying
/// iterator yields `None`. Random-access iterator behavior is not
/// affected, only single and double-ended iterator behavior.

返回的迭代器上还有一个函数已被删除:

impl<T> Fuse<T> {
    /// Resets the fuse such that the next call to .next() or .next_back() will
    /// call the underlying iterator again even if it prevously returned None.
    #[inline]
    fn reset_fuse(&mut self) {
        self.done = false
    }
}

这表示Fuse是对a resettable electric fuse的类比。该名称与 FUSE 文件系统完全无关。

FutureExt::Fuse 基本上是 Future 等同于 Iterator::Fuse。 Rust 中对 Futures 的支持远远落后于对 Iterators.

的支持

这里的共同点是 fuse 函数采用 "一个可以产生事物并且可以停止的事物",并使其不产生停止后的事情。

slog::Fuse 不是“保险丝”一词​​的典型用法:该用法可能指的是炸弹的引信,它很容易被点燃(它很容易出错 ignite/panic 程序) .你可以 kinda 如果你把它看作是“一个东西产生一个 successes/failures 的流并且 fuse 失败并且使它在失败后不再产生任何东西”。 The commit that added it 未提供有关含义的任何提示。