可以吗?可以为 Option 和 Result 以外的类型定义运算符吗?

Mic*_*ski 7 rust

问号运算符 (?) 是为 Option 和 Result 类型定义的。是否可以为某些自定义类型重载它?我还没有发现任何可能指导这种行为的特征。

Ale*_*nov 4

您正在寻找的特征称为std::ops::Carrier。然而,正如您所看到的,它是实验性的,并且引起了关于如何实现它的大量讨论(我相信它已经实验了几年)。

因此从技术上讲,您可以使用它,但您最好不要依赖它,因为它的外观可能会改变或者可以永久删除。