当Option::unwrap_or_default包含引用时,如何使用它



我有一个Vec<Candle>类型的candle_series,它获取最后一个元素,我尝试使用unwrap_or_default:

self.candle_series.last().unwrap_or_default()

但后来我得到了这个错误:

method not found in `std::option::Option<&market::Candle>

如何获取unwrap_or_default在结构而不是引用上的行为?

我目前的解决方法是这样的,但它似乎不正确。如果它是正确的,请让我知道:

self.candle_series.last().unwrap_or(&Candle::default())

如何在结构而不是引用上获得unwrap_or_default的行为?

您需要复制或移动引用(例如,使用Option::cloned,假设您的结构是Clone(,以便您的选项是Option<Candle>,而unwrap_or_default可以完成它的工作。

我目前的解决方法是这样,但它似乎不正确。

我觉得不错,当然,如果你有这样的初始值设定项,使用Candle::new()可能会更短。

最新更新