首页 > 解决方案 > 当 Option::unwrap_or_default 包含引用时,如何使用它?

问题描述

我有一个获取最后一个元素candle_series的类型Vec<Candle>,我尝试使用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())

标签: rust

解决方案


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

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

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

对我来说看起来不错,但当然它可能会更短,例如Candle::new()如果你有这样的初始化程序。


推荐阅读